açık anahtar her zaman şifre ve anahtar kelime ister


19

Ortak anahtar kullanarak bir NAS'dan bir web sunucusuna SSH deniyorum. NAS kullanıcı 'kök' ve web sunucusu kullanıcı 'yedek'

Tüm izinleri doğru şekilde ayarladım ve SSH bağlantısı hatalarını ayıkladığımda şunu alıyorum: (hata ayıklamasının son birazcık)

debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /root/.ssh/id_dsa.pub
debug1: Server accepts key: pkalg ssh-dss blen 433
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase for key '/root/.ssh/id_dsa.pub':

Komutu kullanıyorum:

ssh -v -i /root/.ssh/id_dsa.pub backup@webserver.com

Bir parola istemesi gerçeği elbette iyi bir işarettir, ancak bunu veya parolayı istemesini istemiyorum (parola üzerinde 'geri' tuşuna basarsam daha sonra gelir)

Yanıtlar:


24

Özel anahtarınız şifreli olduğu için ...

ssh-addAşağıdaki komutu kullanarak anahtarınızı ssh aracısına parolayı (veya şifrelemeyle birlikte) ekleyebilir veya kaldırabilirsiniz:

ssh-keygen -p -f /root/.ssh/id_dsa -N ''


DÜZENLE

Oh, kimlik doğrulaması için genel anahtarınızı kullanmaya çalıştığınızı fark ettim ... Orada özel anahtarı kullanmak istiyorsunuz:

ssh -v -i /root/.ssh/id_dsa backup@webserver.com

Ve kesinlikle emin olmak için, dosyanın içeriği web sunucusuna id_dsa.pubgirer ~backup/.ssh/authorized_keys. Bunu otomatik olarak yapmak için aşağıdaki komutu kullanabilirsiniz

ssh-copy-id -i /root/.ssh/id_rsa.pub backup@webserver.com

hala sorunu alıyorum. İşe yaradı ve bana 'kimliğiniz yeni parola ile kaydedildi' verdi. ama bir dahaki sefere giriş yapmaya çalıştığımda yine de bir parola istiyor. Başka ne denemek için emin değilim ...
Andrew Atkinson

güncellenmiş cevabımı kontrol et ... belki yardımcı olur ...
andrekeller

teşekkür ederim, büyük olasılıkla genel anahtarı genel anahtarla karşılaştırmaya çalışıyordum ... Parolayı kaldırmam gerekmiyordu
Andrew Atkinson

Gerçekleştirmek benim pub (aptalca bir hata) kimlik doğrulaması için kullanıyordu sorun oldu. Teşekkürler!
Qix

6

Sahip olduğum özel anahtar OpenSSH formatında olmadığında bu bana oldu.

Başlangıçta PuttyGen kullanarak Windows üzerinde anahtarımı oluşturdum ve aynı şey ile sıçramaya başlamıştı.

PuttyGen anahtar yükleyip OpenSSH biçimine almak için "Dönüşümler" tıklatarak düzeltmek başardı.


2

Birkaç şey var.

Öncelikle, KEY bir şifre istiyorsa, anahtar onunla oluşturuldu. İkincisi, sistem daha sonra bir şifre soruyorsa, anahtar kimlik doğrulaması yapmaz. Yani, SSH anahtarınızı yeniden oluşturmanız (veya @rbtux tarafından önerilen şekilde değiştirmeniz) ve yetkili_anahtarlar dosyalarını düzeltmeniz gerekir.

ssh-keygen -t {dsa | rsa} -b {1024 | 2048 | 4096} -C "isteğe bağlı yorum" -f id_examplekey

Kıvrımlı parantez içindeki öğeler seçenek, tür ve bit boyutudur (Açık olanı belirtmek için: dsa> rsa, 4096> 1024 - "güvenlik" açısından).

Sonra ortak anahtar (.pub) authorized_keysve authorized_keys2dosyalarına eklemeniz gerekir (.pub'ın yerel kullanım için olduğunu söylemek yaygın bir yanlış anlamadır, ancak karşılaştırılması amaçlanmıştır) Yani sunucunun .sshklasöründe.

$ cat id_examplekey.pub >> yetkili_anahtarlar {, 2}

Sonunda, anahtar izinlerinin olduğundan emin olmalısınız chmod 600 id_exampleve tüm bunları yazmayı hafifletmek için, yapılandırma dosyasını ayarlayabilirsiniz: ~/.ssh/configyerel kutunuzda (bir iskelet, bunu bir ton özelleştirebilirsiniz):

Host example.com
    User WHATEVERNAME
    IdentityFile ~/.ssh/id_examplekey

ancak hata ayıklamada şu bölümü okuyan bölüm: debug1: Sunucu anahtarı kabul eder: pkalg ssh-dss blen 433, bu anahtarın kabul edildiği anlamına gelmez mi? Yine aynı parola olmadan yeniden yarattım, hala aynı mı? - Fikirlerim tükendi? Teşekkür ederim
Andrew Atkinson

@AndrewAtkinson Aşağıdan aldığınız anlaşılıyor. Makineden (local, istemci, ne olursa olsun) özel anahtara ve yetkili_anahtarlar dosyalarına eklenen public.pub anahtarına ihtiyacınız vardır. Diğer önerilerim size zaman kazandırır: D İyi şanslar!
nerdwaller

"Öncelikle, ANAHTAR bir şifre istiyorsa, anahtar onunla oluşturuldu." <- Evet, sadece sorgulayıcının ne yaptığını test etsem de, bu yüzden, ortak anahtarla -i yapmak $ ssh user@comp -i ~/.ssh/id_rsa.pubve yanlış izinler ve özel dedi anahtar yok sayılır .. bu yüzden id_rsa gibi izinleri 600 olarak değiştirdim ve bir parola istedi. Bu nedenle, hem genel anahtar hem de özel anahtar bir parola ile oluşturulmamış olsa da, genel anahtarı belirtirseniz bir parola ister
barlop

2

Anahtarın şifrelenmiş olduğu için benim için aşağıdaki adımları izledim:

  • Ssh-agent'ı başlatın: $ ssh-agent bash
  • Anahtar yöneticisine standart kimlik anahtarı ekleyin: $ ssh-add
  • Farklı bir anahtar eklemek istiyorsanız, o zaman: $ ssh-add /location/of/key

Herhangi bir zamanda incelemek için, şu anda yüklü anahtarların listesi:

$ ssh-add -l

Daha fazla ayrıntı bu bağlantıdan edinilebilir



1

Bunun nedeni, OpenSSH v7'de varsayılan olarak devre dışı bırakılmış bir DSA pubkey kullanmanız olabilir.

Anahtar çiftini değiştiremiyorsanız, webserver.com adresindeki SSH arka plan programınıza /etc/ssh/sshd_configaşağıdaki satırı güncelleyerek veya eşdeğer olarak ekleyerek bu Anahtar türlerini kabul etmesini bildirmek olası bir çözüm olacaktır.

PubkeyAcceptedKeyTypes=+ssh-dss

Ve sonra hizmeti yeniden başlatın

/etc/init.d/ssh restart                     # or equivalent

0

Mac OSX'te özel anahtarınızı şu komutu kullanarak anahtarlığa ekleyebilirsiniz:

ssh-add -K /path/to/private_key

Özel anahtarınız ~ / .ssh dizininde depolanmışsa ve id_rsa olarak adlandırılmışsa:

ssh-add -K ~/.ssh/id_rsa

Daha sonra, anahtarlığınızda saklanacak olan şifrenizi girmeniz istenecektir.


Mac istemcisi çalışıyorsa Linux istemcisinde ne yapmam gerekir?
bbaassssiiee
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.