当前位置: 首页>>技术问答>>正文


将SSH密钥添加到authorized_keys

, , ,

问题描述

我在Amazon EC2上有一台Ubuntu服务器,用于开发,今天我愚蠢地清除了~/.ssh/authorized_keys文件中的所有内容。幸运的是我有一个SSH打开,所以我仍然连接,并可以修复该文件,但是当我尝试将我的密钥文件恢复时,它不起作用。我仍然从本地计算机上的服务器获得拒绝权限。

authorized_keys拥有600的权限。我试着用ssh-rsa附加我的SSH密钥,并关闭ssh-rsa。我也尝试将SSH密钥全部作为一行,但这也不起作用。

有什么我必须做的像重新加载文件一些如何?

最佳解决思路

您绝不应该在服务器上保存带有-----BEGIN RSA PRIVATE KEY-----开头内容的文件,这是您的私钥。相反,您必须将公钥放入~/.ssh/authorized_keys文件中。

该公钥使用ssh-keygen生成时具有.pub扩展名,并且其内容以ssh-rsa AAAAB3开头。 (二进制格式在this question的答案中描述)。

~/.ssh在服务器上的权限应为700.文件~/.ssh/authorized_keys(在服务器上)应具有600的模式。client-side上(私有)密钥的权限应为600。

如果私钥没有使用密码保护,并且放在服务器上,我建议您生成一个新密钥:

ssh-keygen -t rsa

如果您完全确定无人可以从服务器恢复已删除的私钥,则可以跳过此步骤。

如果这没有帮助,请运行ssh以获取更详细的选项:

ssh -vvv user@example.com

在服务器端,您可以查看/var/log/auth.log了解详情。

次佳解决思路

另一种在远程机器authorized_keys中安装公用密钥的方法:

cat ~/.ssh/id_rsa.pub | ssh USER@HOST "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

一些优点:

  • 不需要安装ssh-copy-id

  • 保证mkdir在尝试将id_rsa.pub附加到authorized_keys之前工作。

第三种解决思路

如果您有基于登录的身份验证,请使用ssh-copy-id将您的公钥添加到远程服务器。

ssh-copy-id user@host

第四种思路

local> scp .ssh/id_dsa.pub remote.com:
local> ssh remote.com
remote> cat id_dsa.pub >> .ssh/authorized_keys
remote> rm id_dsa.pub
remote> exit

第五种思路

最简单的方法是复制和粘贴…

首先查看/复制您的本地公钥id_rsa.pub的内容,包括开头的”ssh-rsa”,直至以您的电子邮件地址结尾:

cat ~/.ssh/id_rsa.pub

然后在服务器上编辑authorized_keys并将剪贴板的内容粘贴到该文件中的任何其他键的下面:

nano ~/.ssh/authorized_keys

并保存Ctl+O,退出文件Ctl+X,退出SSH会话exit并尝试重新登录以确认其工作。如果它没有要求密码,它的工作。

第六种思路

保存公钥后,您应该将私钥保存到您的电脑上的目录和文件中。在putty的ssh的auth部分中,您应该指向保存在桌面上的私钥文件。它会工作。这个对我有用。

第七种思路

我认为我可以为此做出贡献,因为它专门针对AWS实例,并且所有答案仅将问题视为Linux问题,就像它是一个硬件一样。首先,您需要了解的是,永远不要将EC2实例视为硬件。这只会为你创造更多的工作把它们视为不稳定。这是我看到人们使用AWS的最大障碍。创建实例的AMI并将所需的密钥注入新实例。 cloud-init将为您处理它。更详细地说,您只需在从原始AMI中创建新实例时使用正确的公钥即可。如果您想要生成您自己的pub和pem文件密钥对的批准答案的评论中,AWS会提供您上传您的公钥以供在EC2中使用的选项。

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#how-to-generate-your-own-key-and-import-it-to-aws

参考资料

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