如何从SSH私钥中检索公钥?

ssh-keygen生成的SSH私钥包含公钥部分。 如何从私钥中检索此公钥? 我丢失了我的公钥,需要将此公钥的内容放在服务器authorized_keys文件中,并且不想创建新的密钥对。

或者措辞:如何从id_rsa文件创建id_rsa.pub文件?

我在服务器故障上找到答案: 从私钥创建公共SSH密钥?

选项-y输出公钥:

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

作为旁注,公钥的评论丢失了。 我有一个需要评论的网站(Launchpad?),所以你需要编辑~/.ssh/id_rsa.pub并在第一行附加注释,注释和关键数据之间有空格。 示例公钥显示在下面。

 ssh-rsa AAAA..../VqDjtS5 ubuntu@ubuntu 

对于添加到SSH代理的密钥(在后台运行的程序,并且无需一遍又一遍地重新输入密钥文件密码),可以使用ssh-add -L命令列出公钥添加到代理程序的密钥(通过ssh-add -l )。 当SSH密钥存储在智能卡上时(无法访问私钥文件),这很有用。

这是一个解决方案,专门用于使用Windows SSH到其远程计算机的用户,包括Amazon AWS和GCE上的云图像。

(免责声明)

我最近使用此解决方案远程登录GCE上新部署的VM映像。


使用的工具:

  1. 的puttygen
  2. WinSCP赋予

执行步骤:

  1. 使用puttygen生成公钥/私钥对。
  2. 将公钥上传到云端或远程位置的服务器。

说明(怎么做):

  1. 生成密钥/对或使用现有私钥:

    如果您有私钥:

    打开puttygen,按加载按钮,然后选择您的私钥(* .pem)文件。

    如果您没有私钥:

    • 打开puttygen,
    • 在“参数”部分中选择所需的密钥类型SSH2 DSA(您可以使用RSA或DSA)…并且将密码字段留空,这一点很重要,
    • 按生成并按照说明生成(公共/私人)密钥对。

    样本密钥生成图

  2. 创建一个新的’authorized_keys’文件(使用记事本):

    将公钥数据从PuTTY密钥生成器的“公钥粘贴到OpenSSH authorized_keys文件”部分复制,并将密钥数据粘贴到“authorized_keys”文件中。

    确保此文件中只有一行文本。

  3. 将密钥上传到Linux服务器:

    • 打开WinSCP,
    • 选择SFTP文件协议,然后使用您的SSH凭据登录。
    • 成功后,您将在远程计算机上看到主目录结构。

    将authorized_keys文件上载到远程计算机的主目录。

  4. 设置适当的权限:

    创建一个.ssh目录(如果它不存在)

    authorized_keys文件复制到.ssh目录(这将替换任何现有的authorized_keys文件;请注意这一点)。

    如果文件存在,只需将此文件的内容添加到现有文件即可。

    运行命令以设置权限:

     sudo chmod 700 .ssh && chmod 600 .ssh/authorized_keys 

现在,您可以在不输入凭据的情况下进入远程计算机。

进一步阅读:

  1. 在Windows下生成和上载SSH密钥

  2. 使用OpenSSH密钥,证书.pem和.pub进行无密码validation