如何从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映像。
使用的工具:
- 的puttygen
- WinSCP赋予
执行步骤:
- 使用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
现在,您可以在不输入凭据的情况下进入远程计算机。
进一步阅读:
-
在Windows下生成和上载SSH密钥
-
使用OpenSSH密钥,证书.pem和.pub进行无密码validation