我想我忘记了SSH密钥的密码,但我有一种预感。我如何检验我是否正确?
您可以通过尝试将SSH密钥密码短语加载到SSH代理中来验证它。在OpenSSH中,这是通过ssh-add完成的。
完成之后,请记住通过运行SSH -add -d从终端卸载SSH密码短语。
如果你的密码是解锁你的SSH密钥,你没有SSH -agent,但有sshd (SSH守护进程)安装在你的机器上,做:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys;
ssh localhost -i ~/.ssh/id_rsa
在~ / . ssh / id_rsa。Pub是公钥,~/. Pub是公钥。“Ssh /id_rsa”为私钥。
ssh - keygen - y
Ssh-keygen -y将提示您输入密码短语(如果有的话)。
如果您输入正确的密码短语,它将显示相关联的公钥。 如果您输入了错误的密码,它将显示加载失败。 如果密钥没有密码短语,它将不会提示您输入密码短语,而是立即向您显示相关的公钥。
例如,
创建一个新的公钥/私钥对,带或不带密码短语:
$ ssh-keygen -f /tmp/my_key
...
现在看看你是否可以访问密钥对:
$ ssh-keygen -y -f /tmp/my_key
Following is an extended example, showing output.
创建一个新的公钥/私钥对,带或不带密码短语:
$ 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之前,否则你会得到错误的参数太多。
将@RobBednark的解决方案扩展到特定的Windows + PuTTY场景,您可以这样做:
用PuTTYgen生成SSH密钥对(在Windows中手动生成SSH密钥),保存到PPK文件中; 在Windows资源管理器的上下文菜单中,选择用PuTTYgen编辑。它将提示输入密码。
如果你输入了错误的密码,它会再次提示。
注意,如果您喜欢输入,请在包含PPK文件的文件夹上使用以下命令:puttygen private-key。ppk - y。
使用“ssh-keygen -p”。你可以加上"-f "
它将提示您输入旧密码。如果密码正确,会提示输入新密码。如果旧密码不正确,将显示“Failed to load key <…>”。
目前为止,我在网上找到的最好的答案是:
ssh-keygen -y -P "" -f ~/.ssh/id_rsa
将尝试将密码短语作为空字符串读取私钥。如果您有一个没有密码短语的密钥,这将显示一个公共密钥。
否则,应用程序将退出一个错误代码和消息:
Load key "~/.ssh/id_rsa": incorrect passphrase supplied to decrypt private key
推荐文章
- 警告:未受保护的私钥文件!当尝试SSH到Amazon EC2实例时
- 如何设置ssh超时时间?
- 如何在SSH上使用Sublime
- 使用Git GUI或SSH -keygen的SSH私钥权限太开放
- 在gitlab上被拒绝许可(公钥)
- 使用脚本自动输入SSH密码
- 在Linux中是否有办法继续中断的scp(安全拷贝)命令进程?
- 为什么SSH远程命令得到的环境变量比手动运行时少?
- 将Keypair添加到现有的EC2实例中
- 如何解决“sign_and_send_pubkey:签名失败:代理拒绝操作”?
- 对于未设置密码的OpenSSH私钥,如何添加密码?
- 'heroku'似乎不是一个git存储库
- 存储库访问被拒绝。通过部署键的访问是只读的
- 如何防止Linux操作系统关闭SSH客户端后后台进程被停止
- AWS ssh访问“权限被拒绝(publickey)”问题