Dav*_*ong 230 ssh amazon-ec2 data-recovery
我在 Amazon EC2 上有一台 Ubuntu 服务器,用于开发,今天我愚蠢地清除了~/.ssh/authorized_keys
文件中的所有内容。幸运的是,我打开了 SSH,所以我仍然处于连接状态,并且可以修复文件,但是当我尝试将密钥文件放回时,它不起作用。我的本地机器上的服务器仍然拒绝了我的许可。
authorized_keys
拥有 600 的权限。我尝试将 SSH 密钥附加到 ssh-rsa 并关闭 ssh-rsa。我还尝试将 SSH 密钥全部设为一行,但这也不起作用。
还有什么我必须做的事情,比如如何重新加载文件?
Lek*_*eyn 234
您永远不应该-----BEGIN RSA PRIVATE KEY-----
在服务器上保存其内容开头的文件,即您的私钥。相反,你必须把公共钥匙插入~/.ssh/authorized_keys
文件。
这种公共密钥具有.pub
在使用中产生的扩展ssh-keygen
,其内容与开始ssh-rsa AAAAB3
。(此问题的答案中描述了二进制格式)。
~/.ssh
服务器上的权限应该是700。文件~/.ssh/authorized_keys
(服务器上)的模式应该是600。客户端(私钥)的权限应该是600。
如果私钥没有密码保护,而你把它放在服务器上,我建议你生成一个新的:
ssh-keygen -t rsa
Run Code Online (Sandbox Code Playgroud)
如果您完全确定没有人可以从服务器恢复已删除的私钥,则可以跳过此步骤。
如果这没有帮助,请ssh
使用更详细的选项运行:
ssh -vvv user@example.com
Run Code Online (Sandbox Code Playgroud)
在服务器端,您可以查看/var/log/auth.log
详细信息。
Mar*_*tuc 207
在远程机器上安装公钥的另一种方法authorized_keys
:
cat ~/.ssh/id_rsa.pub | ssh USER@HOST "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Run Code Online (Sandbox Code Playgroud)
一些优点:
不需要ssh-copy-id
安装。
保证mkdir
在尝试附加id_rsa.pub
到 authorized_keys
.
Sho*_*waz 145
如果您有基于登录的身份验证,则使用ssh-copy-id
将您的公钥附加到远程服务器。
ssh-copy-id user@host
Run Code Online (Sandbox Code Playgroud)
jjg*_*jjg 41
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
Run Code Online (Sandbox Code Playgroud)
ow3*_*w3n 22
最简单的方法是复制和粘贴...
首先查看/复制您本地公钥的内容,id_rsa.pub
包括开头的“ssh-rsa”,直到以您的电子邮件地址结尾:
cat ~/.ssh/id_rsa.pub
Run Code Online (Sandbox Code Playgroud)
然后authorized_keys
在服务器上编辑并将剪贴板的内容粘贴到该文件中的任何其他键下方:
nano ~/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
并保存Ctl+O
,退出文件Ctl+X
,退出 SSH 会话exit
并尝试重新登录以确认它有效。如果它没有要求输入密码,它就可以工作。
在要放置密钥的远程机器上获取一个 shell,然后您可以运行这个单行程序来创建必要的文件和目录,设置它们的权限并将密钥附加到文件中。当然,您必须更改KEYGOESHERE
下面的部分及其后的注释。
mkdir -p ~/.ssh && chmod 700 ~/.ssh && touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && echo "ssh-rsa KEYGOESHERE user@remotehost or note" >> ~/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
我认为我可以为此做出贡献,因为它专门与 AWS 实例有关,并且所有答案都仅将问题视为 Linux 问题,就好像它是一块硬件一样。您需要了解的第一件事是,永远不要将 EC2 实例视为硬件。那只会为你创造更多的工作。将它们视为易变的。这是我看到人们在使用 AWS 时遇到的最大障碍。为您的实例创建一个 AMI,并将您需要的密钥注入到新实例中。cloud-init 会为您处理。更详细地说,您需要做的就是在从原始 AMI 创建新实例时使用正确的公钥。如果,就像在已批准答案的评论中一样,您想要生成自己的 pub 和 pem 文件密钥对,AWS 会为您提供上传公共密钥以在 EC2 中使用的选项。
归档时间: |
|
查看次数: |
846785 次 |
最近记录: |