SSH anahtarı benden bir parola mı istiyor?


35

Genel / özel bir anahtar çiftim var. İkisinde de kendileriyle ilişkili herhangi bir şifre yok.

Ne zaman özel veya genel kullanarak ssh kullanmaya çalışırsam (ve sadece genel anahtarı kullanmam gerektiğinden eminim), bir parola sorgusu alıyorum ve sonra elbette bağlanamıyorum.

Bunun nasıl çözüleceği hakkında bir fikri olan var mı? Yanlışlıkla bazı komutları mı yazıyorum? ~ / .Ssh / config dosyasında kurulumum olan bir sunucuya ssh yapmaya çalışıyorum (doğru, bu aynı kurulum başka bir sunucuda çalıştığı için) ~ / .ec2 / key.ppk içinde saklanan anahtarla

Ayrıca bir parola İLE yeni bir özel anahtar oluşturmak için puttygen.exe'yi kullanmayı ve sonra bu anahtarı kullanmayı da denedim ve parolayı yazarken yine de başarısız oluyor.

Yanıtlar:


28

Öncelikle bu, şifre cümlesi olacak özel anahtardır. Bu, uzak sunucuda depolanan genel anahtara karşı doğrular.

En iyi tahmin, OpenSH ile özel bir anahtar ( ppk) anahtar biçimi kullanmaya çalıştığınızdır. Bu işe yaramaz. Bu durumda PuTTYgen openssh için dışa aktarma seçeneğine sahiptir.

ssh-rsa AAAAB3NzaC1y...... etc

Ayrıca, ssh yapmaya çalıştığınız sunucunun ortak anahtarınızı yetkili anahtar dosyasında ( ~/.ssh/authorized_keysgenellikle) doğru bir şekilde sakladığını varsayıyorum .

Bir başka tahmin de, doğru anahtarın seçilmemesidir. Deneyeceğim bazı şeyler:

Anahtar şifresini sıfırlamak ssh-keygen, böyle yapmak ...

$ ssh-keygen -f ~/.ec2/key.ppk -p

Bu, aslında anahtarınızda zaten bir şifre cümlesi olup olmadığını onaylar.

İkinci olarak, ortak anahtarınızı açıkça çıktı olarak belirterek ayrıntılı bir çıktı kullanarak bağlanmayı deneyebilirim:

$ ssh host -i ~/.ec2/key.ppk -vvv

Bu size neler olup bittiği hakkında daha fazla fikir verecektir.


Doğru, bu macun içinde çalışan bir anahtardan macungen tarafından üretilen bir anahtardır. Aynı sunucuya yapıştırdığımda (cygwin örneğini barındıran makineden) aynı anahtarla iyi çalışıyor. Sgwin'den ssh ile bağlanmaya çalıştığımda bombalanıyor. Bu işin nasıl yapılacağı kafam karıştı.
llaskin

6
Mrverrall'ın noktaları, PuTTY özel anahtarının dosya formatının OpenSSH (cygwin'deki ssh istemcisi) için kullanılan dosya formatı ile aynı olmadığını düşünüyorum. Bu yüzden OpenSSH sadece özel anahtar verilerini kullanamıyor çünkü verinin ne anlama geldiğini bulamıyor. Ancak PuTTY'nin bir "dışa aktar" seçeneği vardır, böylece gereken "PEM" biçiminde veri alabilirsiniz.
Phil P

Bu hata ayrıca dosya doğru biçimde olduğunda da verilir; bu nedenle, el ile oluştururken düzgün kopyalayıp yapıştırdığınızdan iki ve üçlü kontrol edin.
Daniel Sokolowski

ssh-rsa AAAAB3NzaC1y...... etcOpenssh'ın gelen biçimi, sağ mı? Özel formatımda bu format var. Üstbilgi PuTTY-User-Key-File-2: ssh-rsa Encryption: none Comment: imported-openssh-key Public-Lines: 6şöyledir : Ancak dosya bir id_rsa dosyası olarak depolanır. Bu, dosyanın adı sadece olsa bile, bunun hala .ppk biçiminde olduğu anlamına mı gelirid_rsa
alpha_989

Burada farklı formatların cevabını buldum. Benim durumumda, dosyanın uzantısı olmasa da, .ppkher türlü hatayı gösterdiği için, aklımı karıştıran macty biçimindeydi, ancak sorunun anahtarın biçiminde olduğuna dair doğrudan bir ipucu vermiyordu. : stackoverflow.com/a/44391850/4752883
alpha_989 15:18

18

Ssh-agent'ı çalıştırabilirsin. Bir tartışma için buraya bakın .

Benim için çalışan kısa versiyon (bash'ta):

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-rnRLi11880/agent.11880; export SSH_AUTH_SOCK;
SSH_AGENT_PID=11881; export SSH_AGENT_PID;
echo Agent pid 11881;

Yankılandığı 3 çizgiyi aldım ve onları idam ettim. Bunu yapmanın başka bir yolu -s çıktısını almaktır:

$ eval `ssh-agent -s`

Sonra kimlik bilgilerimi ekledim:

$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/me/.ssh/id_rsa: 
Identity added: /home/me/.ssh/id_rsa (/home/me/.ssh/id_rsa)

Artık ajan, parolamı yazmam yerine benim için kimlik bilgilerini sağlıyor.

Kabuk çalıştığında ssh-agent'ın kaybolduğuna inanıyorum, bu yüzden başlangıçta maksimum rahatlık için komut dosyası yazılmalıdır. Paylaşılan bağlantı sıra komut dosyası açıklanır.


4

Genel anahtarınızı kurduğunuzda, muhtemelen (belki de yanlışlıkla) bir parola ile kurdunuz.

Muhtemelen yeni bir başlangıç ​​yapmanız gerekiyor - puttygen kullanmadım, ama .ssh dizininizdeki genel anahtarı silebilir (veya yeniden adlandırabilir), ssh-keygenyeni bir tane oluşturmak için kullanabilirsiniz (parola sağlamadığınızdan emin olabilirsiniz) ve sonra public_key'i bağlanmaya çalıştığınız sunucudaki yetkili_keys dosyasına paylaşın.

Eski parola anahtarınızı, bağlandığınız sunucudaki yetkili anahtarlar dosyasından da kaldırmanız gerekebilir.


4

Özel anahtarın id_rsasonunda ekstra satır sonu olmadığından emin olun, bazı durumlarda ekstra satır sonları ssh-keygen'i parola sormak için yapar, şunu deneyin:

sed  '/^$/d' /path/to/key > id_rsa

Ölçek:

ssh-keygen -yf id_rsa

2
OMG bu benim sorunumdu. Bundan sonra fazladan bir yeni satır -----END RSA PRIVATE KEY-----, bir set olmayan bir anahtarın parolasını istemesine neden oldu!
edk750

3

Sshd_config dosyanız StrictModes = yes ise, kontrol edilmesi gereken bir şey varsa, o zaman $ HOME dizini veya $ HOME / .ssh dizini dünyaya gruplandırmak veya diğerlerine yazılabilir olmamalıdır. Aksi halde, kimlik doğrulama ne olursa olsun başarısız olur.


1

Yanlışlıkla ~ / .ssh / id_rsa dosyamı ~ / .ssh / id_rsa.pub ile yazarken hata yaptım. Bunu yapmak, ssh'nin bir geçiş cümlesi sormasına neden olacaktır.


0

Geçen gün bu soruna rastladım. Özellikle, bir özel AWS anahtarını bir makineden diğerine kopyalamaya / yapıştırmaya çalışıyordum.

İlk veya son karakteri kaybetme konusunda kötü bir alışkanlığım var. Özel anahtarınızın sonundaki her tireyi kapmazsanız - anahtar metinle hiçbir ilgisi olmasa da - özel anahtar için bir parola girmeniz istenir. kopyaladığınız anahtar (benim durumumda bu anahtarın sonuna bir tek tire eklemek anlamına gelir.)

Bunun en iyi uygulamanın, Terminal pencereleri arasında kopyalayıp yapıştırmaya çalışmak yerine metin dosyasını tel boyunca SSH yapmak olduğu anlamına geldiğini düşünüyorum.


0

OSX’de şu anda kaçmayı başardım:

$ ssh-add ~/.ssh/id_rsa Enter passphrase for /Users/me/.ssh/id_rsa: `Identity added: /Users/mikekilmer/.ssh/id_rsa (/Users/mikekilmer/.ssh/id_rsa)

Parola, Uygulamalar> Yardımcı Programlar klasöründe bulunan Anahtarlık Erişim uygulaması tarafından depolandı. Sadece id_arama alanına girdim .


0

Sunucudaki günlük dosyalarını görüntülemeyi deneyin. Bkz. / Var / log / auth log (örneğin, OpenSSH için / var / log / authlog, her ne kadar bazı işletim sistemlerinde Portable OpenSSH kullanıyor ve /var/log/auth.log kullanıyordum) görüyorum ve dosyanın sonunu kontrol ediyorum.

Gördüğüm en yaygın nedenler yanlış izinlerdir ( TD1'in cevabında belirtildiği gibi ), ancak diğer anahtarlar (sunucuda depolanan) doğru dosyada bulunmamakla veya yorumlanmakta olan anahtarla veya yanlış yazılmış kullanıcı adı.

Ayrıca, hesabınıza geçici olarak bir parola vermek, yalnızca hesabın başarılı bir şekilde giriş yaptığını doğrulamak için de yararlı olabilir (sorun giderme için).

Günlük dosyasını hızlı bir şekilde çözmenize neden olmuyorsa, günlük dosyasındaki belirli ayrıntıları içeren yeni bir soru göndermenizi öneririm (bu çok daha genel bir soru).


0

Ekibimde, bu gerçekleştiğinde, yerel olarak herhangi bir şeyle ilgili bir sorun değil. Kullanıcının ssh anahtarı ve / veya erişimi, bağlandıkları sunucuda doğru şekilde yapılandırılmamış (bizim durumumuzda bir barındırma platformu). Bazı nedenlerden dolayı, bu olmayan bir ssh anahtarı için bir istemi tetikler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.