SSH Birden Aniden Geçersiz Biçime Dönüyor


23

Bir süre önce AWS'ye bir sunucu kurdum ve oluşturulan SSH anahtarlarını kullandım. Anahtarı Lastpass'a kaydettim ve daha önce oradan başarıyla aldım ve çalışmasını sağladım. Ancak, bugün tekrar denedikten sonra, çalışmasını sağlayamıyorum.

-rw------- 1 itsgreg users 1674 Jun 6 12:51 key_name

Denedim ssh -i key_name, ssh-keygen -f key_nameama hiçbir şey işe yaramazsa, daima bu hata mesajını alıyorum:

Load key "key_name": invalid format

Bunu düzeltmenin bir yolu var mı?

Yanıtlar:


13

key_nameTemsilcisinin içeriğini kontrol et, eğer ajan diyorsa invalid format, o zaman anahtar gibi bir sorun var ... doğru anahtar olduğundan emin misin? İhtiyacınız olan özel anahtar olmasa invalid formatbile, anahtar çalışıyorsa ssh aracısı geri dönmez , yalnızca bağlanamazsınız. Nedense açık anahtarını oraya koymuş olabilirsin. Kontrol et!


5
Kesinlikle kontrol edildi. İle ----BEGIN RSA PRIVATE KEY-----başlar ve ile biter -----END RSA PRIVATE KEY-----. Ayrıca işe yarardı.
Gregor Menih

2
Çok düşük bir ihtimal, ama yine de mümkün, dosyanın bozuk olması. Yeni bir tane oluşturun ve içeriğini lastpass'tan tekrar doldurun.
13dimitar

2
Vay, bu gerçekten yardımcı oldu! Yeni anahtarı oluşturduktan sonra, yeni anahtarın satır başına 64 karakter olduğunu fark ettim, eski anahtarım 76 idi. Eski anahtarımı satır başına yalnızca 64 karakter olacak şekilde yeniden biçimlendirdim, sonra çalışmaya başladı! Ben de ilk satırdan bir çizgi eksikti.
Gregor Menih

2
“Ben de ilk çizgiden bir çizgi eksikti.” Aynen. Bunun için @ItsGreg teşekkür ederiz. Terminalleri seçerken ve kopyalarken ilk karakteri çok özlüyorum!
starfry

15

Bu sorunu çözmek için yaptığım, kullanarak PPK dosyasını dönüştürmek için kullandığımdır PuttyGen.

Önce urkey.PPK, ardından dönüştürme menüsünde, Openssh dosya formatına dışa aktar'a tıklayın. Newkey dosyası yaratacaktır.

Şimdi, ssh -i "newkey" user@127.0.0.1

Bitti. Umarım yardımcı olur.


4

Openssh dosyasını belirli bir kimlik dosyasını .ssh / config dosyasında belirterek kullanmasını istiyordum.

Orijinal çalışma yapılandırması

IdentityFile = <path to public key file> 

Bu herhangi bir değişiklik olmadan çalışmayı durdurdu. Biraz düşündüğümde, yukarıda "özel anahtar dosyasının yolu" ile "genel anahtar dosyasının yolu" nu değiştirdim. İşe yaradı. Sebep, hem genel hem de özel anahtar dosyalarının RSA algoritmasına göre büyük peudoprime ilişkili sayılara sahip olmasıdır. Özel anahtar dosyasını genel anahtar dosyasıyla değiştirirseniz, bu şifreleme sayıları, anahtar dosyalar içinde kaydedilen base64 bloğundan doğru şekilde çıkarılmaz. Görünüşe göre ssh'nin bazı sürümleri .pub uzantısını bulabilir ve doğru özel anahtar dosyasını belirlemek için kullanabilir - ve diğer sürümleri bunu yapmaz. Bu, bu hatanın olabileceği başka bir yoldur. Umarım birine yardımcı olur.


Benim durumumda kurulum configdosyası vardı path_to_public_keyve her şey çalışıyordu. Ancak mac sert bir yeniden başlatma yaptığında ve birkaç gün sonra bir şey yapmaya çalıştım git push, yukarıda belirtilen hatayı almaya başladım. Ama şimdi değiştiğimde path_to_private_keyişler değişiyor ... Hmmm. Emin değilim neden ..
lukik

3

Aynı sorunu yaşadım ve bir nedenden dolayı dosyada Windows tarzı (CRLF) çizgi ayırıcıları olduğu anlaşıldı.

Ek olarak, dosya tek bir LF ile bitmelidir.

Bunları tamir etmek tekrar tehlikeye soktu.


Son LF'nin bu kadar gerekli olması şok edici, ancak bu aslında kısmen bir sorun, diğer kısmı ise dosyayı Windows'ta oluşturdum ve bunu yapmak CRLF satır sonları veriyor. Diğerlerinin referansı dos2unixiçin, CRLF'den (Windows tarzı) LF'ye (Linux tarzı) satır sonlarına dönüştürme komutu verilebilir.
Hashim

1

.Ppk anahtarınızı OpenSSH anahtarına dönüştürmelisiniz

İşte nasıl :

  1. PuttyGen'i indirin ve keypair'inizi oluşturun (keypair'iniz hazır değilse). Özel anahtarı klasörünüze kaydedin (.ppk)
  2. Zaten özel anahtara sahipseniz, "Yükle" düğmesine basarak özel anahtar dosyasını (.ppk) yükleyin. Aksi takdirde, bu adımı atlayın
  3. "Dönüşümler" menüsü altında, OpenSSH anahtarını dışa aktar'ı seçip klasörünüze kaydedin
  4. Artık şifreyi yazmadan sunucunuza giriş yapmak için anahtarı kullanmaya hazırsınız (Genel anahtarı /root/.ssh/authorized_keys, chmod 600 /root/.ssh/authorized_keys, and Restarted SSH demon altına koyduğunuzu farz ediyorum)

1

Bugün CI boru hattım için git etiketleme araçları yazarken, bugün bununla karşılaştım.

İki anahtarım arasındaki fark şuydu:

$ diff ~/.ssh/gitlab ~/.ssh/git_ssh_key
27c27
< -----END OPENSSH PRIVATE KEY-----
---
> -----END OPENSSH PRIVATE KEY-----
\ No newline at end of file

Kodumu şöyle değiştirdim:

     with open(ssh_key_file, 'w') as skf:
-        skf.write(ssh_key)
+        skf.write(ssh_key + '\n')

Ve şimdi ssh anahtarım çalışıyor.

TL; DR - Sanırım özel anahtarınızın sonunda yeni bir hattınız olmalı.


1

Benim durumumda, başlangıç ​​/ bitiş "başlıklar" ve anahtar veriler arasında yeni satırlar olduğu ortaya çıktı:

-----BEGIN RSA PRIVATE KEY-----

- Key data here -

-----END RSA PRIVATE KEY-----

Ekstra yeni satırları kaldırmak, böylece oldu

-----BEGIN RSA PRIVATE KEY-----
- Key data here -
-----END RSA PRIVATE KEY-----

sorunumu çözdüm



0

Bu sorunu yaşadım, çünkü ~ / .ssh'da aslında geçersiz bir format olan bir anahtarım vardı ve çok sayıda anahtarım vardı, bu da SSH'nin komutta tanımlamamı şartıyla SSH'nin hepsini denediği anlamına geliyordu. Sadece başarısız olur çünkü bence sadece 5 anahtar deneyebilir ve daha sonra sadece yanlış kimlik dosyası için okunaklı olan bu hatayı bıraktı. Çözüm sadece IdentitiesOnly yes~ / .ssh / config dosyamda kullanmaktı .


0

Bu hatanın nedeni, ana dosyanın başında boş bir satır olmasıydı. catDışarı çıkarsanız kaçırmak kolaydır .


0

Bu ayrıca, özel anahtarınızda bir parola varsa ve bağlanmayı denediğinizde yanlış parolayı girin.

(Özellikle, bu bana oldu: Mac OS X 10.13.6 için yerleşik SSH olan OpenSSH_7.6p1, LibreSSL 2.6.2.)

Bu yüzden doğru parolayı kullanıp kullanmadığınızı ve CAPS LOCK'un kapalı olduğunu kontrol edin.


-2

PRIVATE anahtarınızı yeniden adlandırdığınızdan ve sorun olan dosya uzantısını kaldırdığınızdan emin olun.

Attığım adımlar

Genel anahtarınızı oluşturun:

Özel dizinde bulunduğunuz dizinde bulunduğunuzdan emin olun.

Genel Anahtar nasıl oluşturulur:

ssh-keygen -y -f Private-Key.pem > Public-key.pub

PUBLIC anahtarının bir .pub dosya uzantısına sahip olduğundan emin olun

Bundan sonra güvenlik nedeniyle uygun izinleri sağlayın:

chmod 600 Private-Key.pem
chmod 400 Public-key.pub

Daha sonra en önemli kısım ve "geçersiz format" hatasını almanızın nedeni

PRIVATE anahtarınızı yeniden adlandırdığınızdan ve dosya uzantısını kaldırdığınızdan emin olun:

.Pem'i Özel anahtarınızdan çıkarın.

mv Private-Key.pem Private-Key

veya Windows bilgisayarda özel anahtarı yeniden adlandırırsanız, aynı ad yalnızca .pem

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.