Jak mogę zweryfikować / sprawdzić / przetestować / zweryfikować moje hasło SSH?

297

Myślę, że zapomniałem hasła do mojego klucza SSH, ale mam przeczucie, co to może być. Jak sprawdzić, czy mam rację?

joachim
źródło
5
To passphrase, bez hasła;)
Timo

Odpowiedzi:

123

Możesz zweryfikować hasło klucza SSH, próbując załadować je do agenta SSH. W przypadku OpenSSH odbywa się to za pośrednictwem ssh-add.

Po zakończeniu pamiętaj o rozładowaniu hasła SSH z terminala, uruchamiając go ssh-add -d.

Ignacio Vazquez-Abrams
źródło
13
Po zakończeniu sprawdzania, rozładuj hasło klucza SSH od agenta SSH za pomocąssh-add -d
Kache
1
Myślę, że ssh-add wymaga uprawnień administratora na komputerze. Pojawia się błąd: „Nie można otworzyć połączenia z agentem uwierzytelniającym”.
IgorGanapolsky
@IgorGanapolsky: Nie, wymaga działającego agenta uwierzytelniania. Zmodyfikuj skrypty startowe lub opcje, aby je wyświetlić.
Ignacio Vazquez-Abrams
20
Odpowiedź Roba jest poprawna.
mgarciaisaia,
Jeśli akurat używasz selinux, możesz również sprawdzić kontekst katalogu domowego i plików .ssh! Miałem szczęście, że mogłem użyć tej prostej poprawki: # restorecon -R -v /home/useraby sprawdzić, czy to jest problem (chociaż poprzednie polecenie nie powinno powodować żadnych problemów), możesz użyć $ ls -lZR <home_dir>do zbadania kontekstu. Jeśli nie widzisz user_home_tw katalogu domowym oraz ssh_home_tw .sshkatalogu i authorized_keyspliku, użyj ich, restoreconaby je naprawić.
fbicknel
523

ssh-keygen -y

ssh-keygen -y wyświetli monit o podanie hasła (jeśli takie istnieje).

    Jeśli wpiszesz poprawne hasło, wyświetli się powiązany klucz publiczny.
    Jeśli wpiszesz nieprawidłowe hasło, wyświetli się load failed.
    Jeśli klucz nie ma hasła, nie poprosi o hasło i natychmiast pokaże powiązany klucz publiczny.

na przykład,

Utwórz nową parę kluczy publiczny / prywatny, z hasłem lub bez:

$ ssh-keygen -f /tmp/my_key
...

Teraz sprawdź, czy możesz uzyskać dostęp do pary kluczy:

$ ssh-keygen -y -f /tmp/my_key


Poniżej znajduje się rozszerzony przykład pokazujący wyniki.

Utwórz nową parę kluczy publiczny / prywatny, z hasłem lub bez:

$ ssh-keygen -f /tmp/my_key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /tmp/my_key.
Your public key has been saved in /tmp/my_key.pub.
The key fingerprint is:
de:24:1b:64:06:43:ca:76:ba:81:e5:f2:59:3b:81:fe [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
|     .+          |
|   . . o         |
|    = . +        |
|   = + +         |
|  o = o S .      |
|   + = + *       |
|    = o o .      |
|     . .         |
|      E          |
+-----------------+

Spróbuj uzyskać dostęp do pary kluczy, wprowadzając poprawne hasło. Zauważ, że klucz publiczny zostanie wyświetlony, a status wyjścia ( $?) będzie 0oznaczał sukces:

$ ssh-keygen -y -f /tmp/my_key
Enter passphrase:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBJhVYDYxXOvcQw0iJTPY64anbwSyzI58hht6xCGJ2gzGUJDIsr1NDQsclka6s0J9TNhUEBBzKvh9nTAYibXwwhIqBwJ6UwWIfA3HY13WS161CUpuKv2A/PrfK0wLFBDBlwP6WjwJNfi4NwxA21GUS/Vcm/SuMwaFid9bM2Ap4wZIahx2fxyJhmHugGUFF9qYI4yRJchaVj7TxEmquCXgVf4RVWnOSs9/MTH8YvH+wHP4WmUzsDI+uaF1SpCyQ1DpazzPWAQPgZv9R8ihOrItLXC1W6TPJkt1CLr/YFpz6vapdola8cRw6g/jTYms00Yxf2hn0/o8ORpQ9qBpcAjJN
$ echo $?
0

Spróbuj uzyskać dostęp do pary kluczy, wprowadzając niepoprawne hasło. Zauważ, że wyświetlony zostanie komunikat o błędzie „ładowanie nie powiodło się” (komunikat może się różnić w zależności od systemu operacyjnego), a status wyjścia ( $?) będzie 1oznaczać błąd:

$ ssh-keygen -y -f /tmp/my_key
Enter passphrase:
load failed
$ echo $?
1

Spróbuj uzyskać dostęp do pary kluczy, która nie ma hasła. Zauważ, że nie pojawia się monit o hasło, wyświetlony zostanie klucz publiczny, a status wyjścia ( $?) będzie 0oznaczał sukces:

$ ssh-keygen -y -f /tmp/my_key_with_no_passphrase
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLinxx9T4HE6Brw2CvFacvFrYcOSoQUmwL4Cld4enpg8vEiN8DB2ygrhFtKVo0qMAiGWyqz9gXweXhdmAIsVXqhOJIQvD8FqddA/SMgqM++2M7GxgH68N+0V+ih7EUqf8Hb2PIeubhkQJQGzB3FjYkvRLZqE/oC1Q5nL4B1L1zDQYPSnQKneaRNG/NGIaoVwsy6gcCZeqKHywsXBOHLF4F5nf/JKqfS6ojStvzajf0eyQcUMDVhdxTN/hIfEN/HdYbOxHtwDoerv+9f6h2OUxZny1vRNivZxTa+9Qzcet4tkZWibgLmqRyFeTcWh+nOJn7K3puFB2kKoJ10q31Tq19
$ echo $?
0
Rob Bednark
źródło
2
Jeśli nie ma hasła, po prostu wydrukuje powiązany klucz publiczny.
Kyrremann
1
Dzięki @Kyrremann! Zaktualizowałem odpowiedź, aby to odzwierciedlić.
Rob Bednark,
ssh-keygen -yprosi o plik klucza i oferuje domyślną wartość, gdy kliknięcie przycisku Return będzie zgodne z oczekiwaniami.
Timo
Użyłem ssh-keygen -ysprawdzić hasło mojego klucza ssh. Działało dobrze, ale mój Ubuntu stał się niesamowicie wolny. Większość programów może uruchomić się za minutę lub dłużej, podczas gdy użycie procesora wynosi 100%. Po ponownym uruchomieniu laptopa nie mogłem się zalogować, ponieważ wyświetlenie pulpitu zajęło kilka minut. Wreszcie znalazłem ten problem na Ask Ubuntu . Musiałem zacząć od gnome-keyring-daemonrozwiązania problemu.
Adam Fónagy,
2

Rozszerzając rozwiązanie @ RobBednark na konkretny scenariusz Windows + PuTTY, możesz to zrobić:

  1. Wygeneruj parę kluczy SSH z PuTTYgen (po ręcznym wygenerowaniu klucza SSH w Windows ), zapisując go w pliku PPK;

  2. Z menu kontekstowego w Eksploratorze Windows wybierz Edytuj za pomocą PuTTYgen. Pojawi się monit o podanie hasła.

Jeśli wpiszesz nieprawidłowe hasło, wyświetli się ponownie.

Uwaga, jeśli chcesz wpisać, należy użyć następującego polecenia w folderze, który zawiera plik PPK: puttygen private-key.ppk -y.

kokbira
źródło
0

Użyj „ssh-keygen -p”. Możesz dodać „-f”

Pojawi się monit o podanie starego hasła. Jeśli hasło jest prawidłowe, pojawi się monit o wprowadzenie nowego hasła. Jeśli stare hasło jest nieprawidłowe, pojawi się komunikat „Nie można załadować klucza <...>”.

Alex F.
źródło
-1

Jeśli Twoim hasłem jest odblokowanie klucza SSH, a nie masz go ssh-agent, ale masz na swoim komputerze sshd (demon SSH):

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys;
ssh localhost -i ~/.ssh/id_rsa

Gdzie ~/.ssh/id_rsa.pubjest klucz publiczny i ~/.ssh/id_rsaklucz prywatny.

Alexx Roche
źródło
1
Nie wymaga to
podania hasła
Robi to dla mnie, aby odblokować prywatny id_rsa dla lokalnego hosta ssh
Alexx Roche,
Pojawia