生成的 SSH 私钥ssh-keygen
包含公钥部分。如何从私钥中检索公钥?我丢失了公钥,需要将公钥的内容放在服务器authorized_keys
文件中,但又不想创建新的密钥对。
换句话说:如何id_rsa.pub
从id_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 映像。
使用的工具:
执行步骤:
- 使用 puttygen 生成公钥/私钥对。
- 将公钥上传到云端或远程位置的服务器。
描述(如何操作):
生成密钥/密钥对或使用现有的私钥:
如果您有私钥:
打开puttygen,按加载按钮并选择您的私钥(*.pem)文件。
如果你不是有一个私钥:
- 打开 puttygen,
- 在参数部分中选择所需的密钥类型 SSH2 DSA(您可以使用 RSA 或 DSA)...并且务必将密码字段留空,
- 按下生成并按照说明生成(公钥/私钥)密钥对。
创建一个新的“authorized_keys”文件(使用记事本):
从 PuTTY 密钥生成器的“用于粘贴到 OpenSSH authorized_keys 文件中的公钥”部分复制您的公钥数据,然后将密钥数据粘贴到“authorized_keys”文件中。
确保此文件中只有一行文本。
将密钥上传到 Linux 服务器:
- 打开 WinSCP,
- 选择 SFTP 文件协议并使用您的 SSH 凭据登录。
- 成功后,您将在远程机器上看到主目录结构。
将 authorized_keys 文件上传到远程机器的主目录。
设置适当的权限:
创建一个
.ssh
目录(如果不存在)将文件复制
authorized_keys
到 .ssh 目录(这将替换任何现有authorized_keys
文件;请注意这一点)。如果该文件存在,则只需将该文件的内容添加到现有文件中。
运行命令设置权限:
sudo chmod 700 .ssh && chmod 600 .ssh/authorized_keys
现在您将能够通过 ssh 连接到远程机器,而无需每次都输入凭据。