如何验证/检查/测试/验证我的SSH密码?


297

我想我忘记了SSH密钥的密码短语,但是我有一种预感。我如何检查我是否正确?


5
它是一个passphrase,没有密码;)
Timo

Answers:


123

您可以通过尝试将SSH密钥密码短语加载到SSH代理中来对其进行验证。使用OpenSSH可以通过来完成ssh-add

完成后,请记住通过运行来从终端卸载SSH密码ssh-add -d


13
完成检查后,请使用ssh-add -d
Kache

1
我认为ssh-add需要计算机上的管理员权限。我收到错误消息:“无法打开与身份验证代理的连接。”
IgorGanapolsky

@IgorGanapolsky:不,它需要一个正在运行的身份验证代理。修改您的启动脚本或选项以启动一个。
Ignacio Vazquez-Abrams 2014年

20
罗伯的答案是正确的答案。
mgarciaisaia

如果您恰巧正在使用selinux,则可能还需要检查主目录和.ssh文件的上下文!我很幸运能够使用此简单的修复程序:# restorecon -R -v /home/user要检查是否是问题所在(尽管前面的命令不应引起任何问题),您可以使用它$ ls -lZR <home_dir>来检查上下文。如果您没有user_home_t在主目录以及目录和文件ssh_home_t上看到,请使用进行修复。.sshauthorized_keysrestorecon
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
如果没有密码,它将仅打印出关联的公共密钥。
Kyrremann

1
谢谢@Kyrremann!我现在更新了答案以反映这一点。
罗伯·贝德纳克(Rod Bednark)'16

ssh-keygen -y要求提供密钥文件,并按预期提供单击返回时的默认值。
Timo

我曾经ssh-keygen -y检查过ssh密钥的密码。一切正常,只是我的Ubuntu变得异常缓慢。当CPU使用率为100%时,大多数程序可能在一分钟或更长时间内启动。重新启动笔记本电脑后,我几乎无法登录,因为花了几分钟才能看到我的台式机。最后,我在Ask Ubuntu上发现了这个问题。我必须首先gnome-keyring-daemon解决该问题。
亚当·冯尼(AdamFónagy)'18年

2

将@RobBednark的解决方案扩展到特定的Windows + PuTTY方案,您可以这样做:

  1. 使用PuTTYgen生成SSH密钥对(在Windows中手动生成SSH密钥),然后将其保存到PPK文件中;

  2. 使用Windows资源管理器中的上下文菜单,选择“使用PuTTYgen编辑”。它将提示输入密码。

如果输入错误的密码,它将再次提示。

请注意,如果你喜欢打字,包含PPK文件的文件夹上使用以下命令: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
它不需要这样做的密码
Imme22009 2013年

它对我有用,可以将私有id_rsa解锁到ssh localhost
Alexx Roche 2013年

我收到错误消息:“ ssh:连接到主机本地主机端口22:文件编号错误”
IgorGanapolsky 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.