当前位置: 首页>>技术教程>>正文


如何从SSH私钥检索公钥?

, ,

问题描述

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

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

最佳解决方案

我在Serverfault上找到了答案:Create a public SSH key from the private key?

选项-y输出公钥:

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

作为一个附注,公钥的注释丢失了。我有一个需要注释的网站(Launchpad?),因此您需要编辑~/.ssh/id_rsa.pub并在注释和关键数据之间留出空格,并在第一行添加注释。示例公共密钥显示在下面截断。

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

对于添加到SSH代理的密钥(在后台运行的程序,并避免重复使用密钥文件密码短语re-entering),可以使用ssh-add -L命令列出添加到密钥中的密钥的公钥代理(通过ssh-add -l)。当SSH密钥存储在智能卡上(并且无法访问私钥文件)时,这非常有用。

次佳解决方案

该解决方案专门用于使用Windows通过SSH连接到他们的远程计算机,包括AWS和GCE上的云图像。

(如果这对你有用,高度赞赏,感谢您的耐心。)

(免责声明)

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


使用的工具:

  1. puttygen

  2. winscp


执行步骤:

  1. 使用puttygen生成公钥/私钥对。

  2. 将公钥上传到您的云服务器或远程位置。


说明(如何操作):

  1. 生成密钥/对或使用现有私钥:如果您有私钥:打开puttygen,请按load按钮并选择您的私钥(* .pem)文件。如果您没有私钥:

    • 打开puttygen,

    • 在Parameters部分中选择所需的密钥类型SSH2 DSA(您可以使用RSA或DSA)…并且将密码短语字段保留为空是非常重要的,

    • 按下生成并按照说明生成(公/私)密钥对。

      command-line,ssh,ubuntu

  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
    

现在,您将可以在不输入证书的情况下ssh进入远程机器。

进一步阅读:

  1. https://opengear.zendesk.com/entries/23216142-Generating-and-uploading-SSH-keys-under-Windows

  2. http://www.beginninglinux.com/home/server-administration/openssh-keys-certificates-authentication-pem-pub-crt

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/79.html,未经允许,请勿转载。