(免责声明)

(免责声明)

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

换句话说:如何id_rsa.pubid_rsa文件创建文件?

答案1

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

答案2

这是专门为使用 Windows 通过 SSH 访问远程机器的用户(包括 Amazon AWS 和 GCE 上的云映像)提供的解决方案。

(免责声明)

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


使用的工具:

  1. 普蒂根
  2. 温SCP

执行步骤:

  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
    

现在您将能够通过 ssh 连接到远程机器,而无需每次都输入凭据。

进一步阅读:

  1. Windows 下生成并上传 SSH 密钥

  2. 使用 OpenSSH Key、证书 .pem 和 .pub 进行无密码身份验证

相关内容