Как я могу проверить / проверить / проверить / проверить мою SSH-фразу?


297

Я думаю, что забыл пароль для моего ключа SSH, но я догадываюсь, что это может быть. Как я могу проверить, прав ли я?


5
Это passphraseбез пароля;)
Тимо

Ответы:


123

Вы можете проверить свою ключевую фразу SSH-ключа, попытавшись загрузить ее в ваш агент SSH. С OpenSSH это делается через ssh-add.

Как только вы закончите, не забудьте выгрузить вашу парольную фразу SSH из терминала, запустив ssh-add -d.


13
Как только вы закончите проверку, выгрузите ключевую фразу SSH-ключа из агента SSH с помощьюssh-add -d
Kache

1
ssh-add требует прав администратора на машину, я думаю. Я получаю сообщение об ошибке: «Не удалось открыть соединение с вашим агентом аутентификации».
Игорь Ганапольский

@IgorGanapolsky: Нет, для этого требуется работающий агент аутентификации. Измените ваши сценарии запуска или параметры, чтобы вызвать его.
Игнасио Васкес-Абрамс

20
Ответ Роба - правильный ответ.
mgarciaisaia

Если вы используете selinux, вы также можете проверить контекст домашнего каталога и файлов .ssh! Мне посчастливилось использовать это простое исправление: # restorecon -R -v /home/userчтобы проверить, является ли это проблемой (хотя предыдущая команда не должна вызывать проблем), вы можете использовать ее $ ls -lZR <home_dir>для изучения контекста. Если вы не видите ни user_home_tв домашнем каталоге, ни ssh_home_tв .sshкаталоге, ни в authorized_keysфайле, используйте их restoreconдля исправления.
fbicknel

523

ssh-keygen -y

ssh-keygen -y предложит ввести пароль (если он есть).

    Если вы введете правильную фразу-пароль, он покажет вам связанный открытый ключ.
    Если вы введете неправильную фразу-пароль, она отобразится load failed.
    Если ключ не имеет парольной фразы, он не будет запросит у вас парольную фразу и немедленно покажет вам связанный открытый ключ.

например,

Создайте новую пару открытого / закрытого ключа с парольной фразой или без нее:

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

Теперь посмотрим, можете ли вы получить доступ к паре ключей:

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


Ниже приведен расширенный пример с выводом.

Создайте новую пару открытого / закрытого ключа с парольной фразой или без нее:

$ 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 rob@Robs-MacBook-Pro.local
The key's randomart image is:
+--[ RSA 2048]----+
|     .+          |
|   . . o         |
|    = . +        |
|   = + +         |
|  o = o S .      |
|   + = + *       |
|    = o o .      |
|     . .         |
|      E          |
+-----------------+

Попытайтесь получить доступ к паре ключей, введя правильную фразу-пароль. Обратите внимание, что будет показан открытый ключ, а состояние выхода ( $?) будет 0означать успех:

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

Попытайтесь получить доступ к паре ключей, введя неверную фразу-пароль. Обратите внимание, что будет отображено сообщение об ошибке «загрузка не удалась» (сообщение может отличаться в зависимости от ОС), а состояние выхода ( $?) будет 1означать ошибку:

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

Попытайтесь получить доступ к паре ключей без парольной фразы. Обратите внимание, что для парольной фразы нет запроса, будет отображаться открытый ключ и состояние выхода ( $?) будет 0означать успех:

$ 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

2
Если пароля нет, он просто распечатает соответствующий открытый ключ.
Кюрреманн

1
Спасибо @Kyrremann! Сейчас я обновил ответ, чтобы отразить это.
Роб Беднарк

ssh-keygen -yзапрашивает файл ключа и предлагает значение по умолчанию при нажатии возврата, как и следовало ожидать.
Тимо

Я использовал ssh-keygen -yдля проверки парольной фразы моего ключа SSH. Он работал нормально, за исключением того, что моя Ubuntu стала невероятно медленной. Большинство программ может запуститься через минуту или более, если загрузка процессора составляет 100%. После перезагрузки моего ноутбука я едва мог войти в систему, так как потребовалось несколько минут, чтобы увидеть мой рабочий стол. Наконец-то я нашел эту проблему в Ask Ubuntu . Я должен был начать, gnome-keyring-daemonчтобы решить проблему.
Адам Фоньяги

2

Расширяя решение @ RobBednark для конкретного сценария Windows + PuTTY, вы можете сделать это:

  1. Сгенерируйте пару ключей SSH с PuTTYgen (после Ручной генерации вашего ключа SSH в Windows ), сохранив ее в файл PPK;

  2. В контекстном меню проводника Windows выберите «Редактировать с помощью PuTTYgen». Это запросит пароль.

Если вы введете неправильный пароль, он просто запросит снова.

Обратите внимание, если вы хотите ввести, используйте следующую команду в папку, содержащую файл ППК: puttygen private-key.ppk -y.


0

Используйте "ssh-keygen -p". Вы можете добавить "-f"

Вам будет предложено ввести старый пароль. Если пароль правильный, он предложит ввести новый пароль. Если старый пароль неверен, вы получите «Не удалось загрузить ключ <...>».


-1

Если ваша парольная фраза предназначена для разблокировки вашего ключа SSH ssh-agent, но у вас его нет , но на вашем компьютере установлен sshd (демон SSH), выполните:

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

Где ~/.ssh/id_rsa.pubнаходится открытый ключ, и где ~/.ssh/id_rsaнаходится закрытый ключ.


1
Это не просит
парольной

Это делает для меня, чтобы разблокировать приватную id_rsa для ssh localhost
Alexx Roche

Я получаю сообщение об ошибке: «ssh: подключение к локальному порту хоста 22:
неверный
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.