我已通过以下命令使用密码生成我的公钥:
ssh-keygen -t rsa -C "joy@example.com"
但问题是我忘了它。现在每当我要git推送我的代码时,它都要求我输入密码。有什么办法可以恢复吗?否则我必须从头开始重新生成它。
答案 0 :(得分:0)
您无法从公钥或私钥中恢复密码(除非使用极大的群集)。
此外,由于密钥将密码作为输入,因此无法从头开始重新生成密钥。并且密码对的哈希以某种方式在密钥对中编码。
您可以做的是生成一个新密钥(使用新密码),将ssh-agent设置为默认使用新密钥。但是,您需要访问服务器才能将新密钥复制到。
答案 1 :(得分:0)
我今天一直在测试自动化,并且意外拼错了我的一个密码短语。我只知道我盲目地写错了顺序的字母,却无法找到如何重新输入键盘。因此我用python打破了它:
#!/usr/bin/python
from itertools import permutations
from subprocess import Popen
# bruteforce misspelled passphrase
for psph in ["ps%d"% "".join(i) for i in permutations("aswor")]:
cmd = "ssh-keygen -p -f \"/home/m-nikolaev/.ssh/id_rsa\" -P \"%s\"" % psph
p = Popen(cmd, shell=True)
p.wait()
第六个排列显示我弄乱了四个相邻的键。