Yanıtlar:
Herkese açık / özel bir DSA anahtar takımını nasıl test edersiniz? Şeklindekissh-keygen -y -e -f <private key> kabul edilen cevap yerine yolu tercih ederdim. Yığın Taşması.
ssh-keygen -y -e -f <private key>özel bir anahtar alır ve doğrudan mevcut ortak anahtarlarınızla karşılaştırılabilecek ilgili ortak anahtarı yazdırır. (İpucu: Yorumlara veya önemli seçeneklere dikkat edin.)
(Bunu nasıl yapıyor? Sadece umumi anahtarın doğrudan veya dolaylı olarak özel anahtarda kodlanmasını umuyorum ...)
Buna kendim ihtiyacım vardı ve aşağıdaki Bash tek astarını kullandım. Anahtarlar birbirine aitse hiçbir şey vermemelidir. -qDiff komutuna biraz uygulayın ve diff sadece dönüş kodunu uygun şekilde ayarlar.
PRIVKEY=id_rsa
TESTKEY=id_rsa.pub
diff <( ssh-keygen -y -e -f "$PRIVKEY" ) <( ssh-keygen -y -e -f "$TESTKEY" )
ssh-keygen -y -e -f id_rsahiç kontrol etmeyecek , ancak değeri id_rsa.pub'dan döndürecektir. Yani, eğer echo 5 > id_rsaözel anahtarı silerseniz, o zaman diff'i yapın, diff geçecektir! Ayrıca, ssh-keygen -yef foofoo'nun geçerli bir anahtar olmadığı durumlarda (ve buna karşılık gelen hiçbir foo.pub bulunmuyorsa), kullanıcı girdisini beklemeyi engeller, bu nedenle komut dosyasında kullanmaya dikkat edin.
Test ettiğiniz ortak anahtar dosyasını nereden aldığınıza bağlı olarak, kabul edilen cevap yanlış pozitif sonuç verebilir. Bunun nedeni yorumunda @drewbenn tarafından açıklanan davranış. Özellikle, -e seçeneği -f seçenek parametresi olarak özel anahtar dosyasıyla kullanıldığında, ilgili ortak anahtar dosyasındakileri basitçe papağanlar (ancak yeniden biçimlendirir).
Başka bir deyişle,
ssh-keygen -y -f id_rsa
(görünüşe göre) ortak anahtar değerini üretir ve
ssh-keygen -y -e -f id_rsa
basitçe ve varolan id_rsa.pub içindeki anahtarı ne olursa olsun çıktılar (ve yeniden biçimlendirir) .
Benim durumumda, çiftin bozulmadığını doğrulamam gerekiyor. Böylece, aşağıdakileri karşılaştırmaya karar verdim:
ssh-keygen -y -f id_rsa | cut -d' ' -f 2
ile
cut -d' ' -f 2 id_rsa.pub
Bu nedenle:
diff <(cut -d' ' -f 2 id_rsa.pub) <(ssh-keygen -y -f id_rsa | cut -d' ' -f 2)
Belki de bu kadar esnek değildir, ancak ihtiyaçlarım için daha iyidir. Belki başka birine yardım eder.
Onlar yerel sisteminizde iseniz, sopa id_rsa.pubGözlerinde farklı $HOME/.ssh/authorized_keysve sshkarşı localhostkullanarak id_rsaanahtarı. İşe yararsa eşleşirler.
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
ssh -i $HOME/.ssh/id_rsa localhost
ssh -vçok da yardımcı olur.