Git 如何恢复密码短语

Git 如何恢复密码短语,git,ssh-keys,Git,Ssh Keys,我已通过以下命令生成带有密码短语的公钥: ssh-keygen -t rsa -C "joy@example.com" 但问题是我已经忘记了。现在,每当我要git推送我的代码时,它都会询问我的密码。我有什么办法可以找回它吗?否则,我必须从头开始重新生成它。您无法从公钥或私钥中恢复密码短语(除非使用非常大的群集) 此外,您不能从头开始重新生成密钥,因为密钥将密码短语作为输入。密码短语的散列以某种方式编码在密钥对中 您可以做的是生成一个新密钥(使用新的密码短语),默认情况下,将ssh代理设置为使

我已通过以下命令生成带有密码短语的公钥:

ssh-keygen -t rsa -C "joy@example.com" 

但问题是我已经忘记了。现在,每当我要git推送我的代码时,它都会询问我的密码。我有什么办法可以找回它吗?否则,我必须从头开始重新生成它。

您无法从公钥或私钥中恢复密码短语(除非使用非常大的群集)

此外,您不能从头开始重新生成密钥,因为密钥将密码短语作为输入。密码短语的散列以某种方式编码在密钥对中


您可以做的是生成一个新密钥(使用新的密码短语),默认情况下,将ssh代理设置为使用新密钥。不过,您需要访问服务器才能将新密钥复制到。

我今天一直在测试自动化,不小心拼错了我的一个密码短语。我只知道我盲目地按错误的顺序写信,无法从键盘上重新打字中找到答案。因此,我用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() 

第六次排列显示我弄乱了四个相邻的密钥。

秘密密码短语的意义在于它无法重新生成或猜测。如果这真的很重要,而且你有时间和金钱可以花,那么暴力猜测攻击可能是可行的,但你可能应该吞下并重新开始。