题 从私钥创建公共SSH密钥?


假设我有一个SSH密钥,但我删除了公钥部分。我有私钥部分。有什么方法可以重新生成公钥部分吗?


202
2017-08-10 14:36






答案:


使用-y选项ssh-keygen:

ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pub

来自'man ssh-keygen'

 -y      This option will read a private OpenSSH format file and print an
         OpenSSH public key to stdout.

使用-f选项指定私钥,您的可能是dsa而不是rsa。您的私钥名称可能包含您使用的名称。新生成的公钥应与您之前生成的公钥相同。


239
2017-08-10 14:39



为什么“-t dsa”? May的OP的关键是rsa?我摆脱-t而是使用-f。 - innaM
好点,相应更新 - Kyle Brandt♦
是的,我最初是RSA。 - Rory
在Mac OSX 10.9.3 Mavericks上运行命令后,我'加载失败'。我该如何解决这个问题? - Hyperfocus
我认为如果私钥受密码保护,您可以使用-N参数更进一步: ssh-keygen -f ~/.ssh/id_rsa -y -N "$PASSWORD" > ~/.ssh/id_rsa.pub - ken


解决方案专门针对使用Windows的用户

使用的工具:

  • Puttygen(PuTTY Key Generator)
  • WinSCP赋予

执行步骤:

  1. 打开PuTTY密钥生成器。
  2. 加载您的私钥(*.ppk 文件)。
  3. 将您的公钥数据从PuTTY密钥生成器的“用于粘贴到OpenSSH authorized_keys文件的公钥”部分复制 如果要使用它,请将关键数据粘贴到“authorized_keys”文件(使用记事本)。

快照显示Puttygen的部分焦点:

Snapshot showing portions of Puttygen to focus


6
2017-11-21 10:00



进一步阅读: askubuntu.com/questions/53553/... - devprashant
Puttygen还可以“导入”OpenSSH(真正的OpenSSL-legacy)和SSHCOM格式的私钥。虽然它起源于Windows,但它也被移植到Unix和Unix版本 puttygen 是一个命令行(而不是GUI)程序;见例如 linux.die.net/man/1/puttygen - dave_thompson_085