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

369

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

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

    
Lekensteyn 18.07.2011 - 11:57

2 答案

571

我在服务器故障上找到答案: 从私钥创建公共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密钥存储在智能卡上时,这很有用(并且无法访问私钥文件)。

    
给出答案 Lekensteyn 18.07.2011 - 12:12
12

此解决方案专门针对使用Windows SSH进入其远程计算机的用户,包括Amazon AWS和GCE上的云图像。

(声明)

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

使用的工具:

  1. puttygen
  2. WinSCP
  3. 执行步骤:

    1. 使用puttygen生成公钥/私钥对。
    2. 将公钥上传到云端或远程位置的服务器。
    3. 描述(如何操作):

      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
        
      5. 现在,您可以在不输入凭据的情况下进入远程计算机。

        进一步阅读:

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

        2. 使用OpenSSH 无密码验证密钥,证书.pem和.pub

给出答案 devprashant 20.11.2015 - 07:18

阅读有关标签的其他问题