从私钥创建公共SSH密钥?


215

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

Answers:


253

使用-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。您的私钥名称可能包含您使用的名称。新生成的公钥应与之前生成的公钥相同。


7
为什么是“ -t dsa”?Mayge OP的关键是rsa吗?我会摆脱-t,而是使用-f。
innaM 2009年

1
好点,并进行了相应的更新
凯尔·布​​兰特

是的,我的最初是RSA。
罗里

1
在Mac OSX 10.9.3 Mavericks上,运行命令后出现“加载失败”的情况。我该如何解决?
Hyperfocus

我认为,如果私钥受密码保护,您可以使用-N参数更进一步:ssh-keygen -f ~/.ssh/id_rsa -y -N "$PASSWORD" > ~/.ssh/id_rsa.pub
ken 2014年

6

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

使用的工具:

  • Puttygen(PuTTY密钥生成器)
  • WinSCP

执行步骤:

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

快照显示了Puttygen需要重点关注的部分:

快照显示Puttygen要聚焦的部分



Puttygen还可以“导入” OpenSSH(实际上是OpenSSL传统)和SSHCOM格式的私钥。尽管它起源于Windows,但它也已经移植到Unix,并且Unix版本puttygen是命令行(不是GUI)程序。参见例如linux.die.net/man/1/puttygen
dave_thompson_085 '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.