我想我忘记了 SSH 密钥的密码,但我有预感它可能是什么。我如何检查我是否正确?
6 回答
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
请注意,参数的顺序很重要。-y
必须先来-f input_keyfile
,否则会报错Too many arguments.
。
您可以通过尝试将其加载到您的 SSH 代理来验证您的 SSH 密钥密码。使用OpenSSH,这是通过ssh-add
.
完成后,请记住通过运行从终端卸载 SSH 密码ssh-add -d
。
将@RobBednark 的解决方案扩展到特定的 Windows + PuTTY 场景,您可以这样做:
使用 PuTTYgen 生成 SSH 密钥对(在 Windows 中手动生成 SSH 密钥之后),将其保存到 PPK 文件中;
使用 Windows 资源管理器中的上下文菜单,选择使用 PuTTYgen 编辑。它将提示输入密码。
如果您输入了错误的密码,它只会再次提示。
请注意,如果您喜欢键入,请在包含 PPK 文件的文件夹中使用以下命令:puttygen private-key.ppk -y
.
到目前为止,我在网上找到的最佳答案是:
ssh-keygen -y -P "" -f ~/.ssh/id_rsa
这将尝试使用密码作为空字符串来读取私钥。如果你有一个没有密码的密钥,那将显示一个完美的公钥。
否则应用程序将退出并显示错误代码和消息:
Load key "~/.ssh/id_rsa": incorrect passphrase supplied to decrypt private key
如果您的密码是解锁您的 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
。
使用“ssh-keygen -p”。您可以添加“-f”
它将提示您输入旧密码。如果密码正确,会提示输入新密码。如果旧密码不正确,您将收到“无法加载密钥 <...>”。