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

joa*_*him 267 ssh openssh ssh-keys

我可能忘记了SSH密码的密码.再次.

但我有预感它可能是什么.我如何检查我是否正确?

Rob*_*ark 481

ssh-keygen -y

ssh-keygen -y 将提示您输入密码(如果有密码).

    如果输入正确的密码,它将显示相关的公钥.
    如果输入错误的密码,它将显示load failed.
    如果密钥没有密码,它将不会提示您输入密码,并会立即显示相关的公钥.

例如,

创建一个新的公钥/私钥对,带或不带密码:

$ ssh-keygen -f /tmp/my_key
...
Run Code Online (Sandbox Code Playgroud)

现在看看你是否可以访问密钥对:

$ ssh-keygen -y -f /tmp/my_key
Run Code Online (Sandbox Code Playgroud)


以下是一个扩展示例,显示输出.

创建一个新的公钥/私钥对,带或不带密码:

$ 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          |
+-----------------+
Run Code Online (Sandbox Code Playgroud)

尝试通过输入正确的密码来访问密钥对.请注意,将显示公钥,退出状态($?)将0表示成功:

$ ssh-keygen -y -f /tmp/my_key
Enter passphrase:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBJhVYDYxXOvcQw0iJTPY64anbwSyzI58hht6xCGJ2gzGUJDIsr1NDQsclka6s0J9TNhUEBBzKvh9nTAYibXwwhIqBwJ6UwWIfA3HY13WS161CUpuKv2A/PrfK0wLFBDBlwP6WjwJNfi4NwxA21GUS/Vcm/SuMwaFid9bM2Ap4wZIahx2fxyJhmHugGUFF9qYI4yRJchaVj7TxEmquCXgVf4RVWnOSs9/MTH8YvH+wHP4WmUzsDI+uaF1SpCyQ1DpazzPWAQPgZv9R8ihOrItLXC1W6TPJkt1CLr/YFpz6vapdola8cRw6g/jTYms00Yxf2hn0/o8ORpQ9qBpcAjJN
$ echo $?
0
Run Code Online (Sandbox Code Playgroud)

尝试通过输入错误的密码来访问密钥对.请注意,将显示"加载失败"错误消息(消息可能因操作系统而异),退出状态($?)将1指示错误:

$ ssh-keygen -y -f /tmp/my_key
Enter passphrase:
load failed
$ echo $?
1
Run Code Online (Sandbox Code Playgroud)

尝试访问没有密码短语的密钥对.请注意,没有提示密码短语,将显示公钥,退出状态($?)将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
Run Code Online (Sandbox Code Playgroud)

  • 如果没有密码,它将仅打印出关联的公共密钥。 (2认同)
  • 谢谢@Kyrremann!我现在已经更新了答案以反映这一点。 (2认同)

Ign*_*ams 108

您可以通过尝试将其加载到SSH代理中来验证SSH密钥密码.使用OpenSSH,这是通过ssh-add.

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

  • [Rob的回答](http://stackoverflow.com/a/23666831/641451)是正确的答案. (15认同)
  • 完成检查后,使用`ssh-add -d`从SSH代理卸载SSH密钥密码 (12认同)

red*_*red 22

到目前为止,我在网上找到的最好答案是:

ssh-keygen -y -P "" -f ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

这将尝试读取密码为空字符串的私钥。如果您有一个没有密码的密钥,那么这将完美地显示公钥。

否则应用程序将退出并显示错误代码和消息:

Load key "~/.ssh/id_rsa": incorrect passphrase supplied to decrypt private key
Run Code Online (Sandbox Code Playgroud)

  • 至少有一个我们可以在 shell 脚本中使用的解决方案! (2认同)

kok*_*ira 6

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

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

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

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

请注意,如果您喜欢键入,请在包含 PPK 文件的文件夹上使用以下命令:puttygen private-key.ppk -y.