我在 Amazon EC2 上有一个 Ubuntu 服务器,用于开发,今天我愚蠢地清除了~/.ssh/authorized_keys
文件中的所有内容。幸运的是,我打开了 SSH,因此我仍然可以连接,并且可以修复文件,但是当我尝试放回我的密钥文件时,它不起作用。我的本地计算机上的服务器仍然拒绝我的权限。
authorized_keys
权限为 600。我尝试过将 SSH 密钥附加到 ssh-rsa 中,并将 ssh-rsa 关闭。我还尝试过将 SSH 密钥全部放在一行中,但同样没有效果。
我是否还需要做其他事情,例如以某种方式重新加载文件?
答案1
你应该绝不将文件内容以 开头保存-----BEGIN RSA PRIVATE KEY-----
在服务器上,即您的私人的键。相反,你必须把民众键入~/.ssh/authorized_keys
文件。
这民众.pub
使用生成的密钥具有扩展名ssh-keygen
,其内容以 开头ssh-rsa AAAAB3
。(二进制格式在这个问题)。
~/.ssh
服务器上的权限应该是 700。该文件~/.ssh/authorized_keys
(在服务器上)应该具有 600 模式。客户端(私钥)的权限应该是 600。
如果私钥没有密码保护,并且您将其放在服务器上,我建议您生成一个新的私钥:
ssh-keygen -t rsa
如果您完全确定没有人可以从服务器恢复已删除的私钥,则可以跳过此步骤。
如果这没有帮助,请运行ssh
更详细的选项:
ssh -vvv [email protected]
在服务器端,您可以查看/var/log/auth.log
详细信息。
答案2
在远程机器上安装公钥的另一种方法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
。
新建的authorized_keys
文件或.ssh
文件夹可能没有正确的文件权限。这可能会导致 ssh 尝试回退到密码验证(如果仍然启用)。
要解决此问题,请重新登录服务器并运行:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
答案3
如果您有基于登录的身份验证,则使用ssh-copy-id
将您的公钥附加到远程服务器。
ssh-copy-id user@host
答案4
最简单的方法是复制和粘贴...
首先查看/复制您的本地公钥的内容id_rsa.pub
,包括开头的“ssh-rsa”直到以您的电子邮件地址结尾:
cat ~/.ssh/id_rsa.pub
authorized_keys
然后在服务器上编辑并将剪贴板的内容粘贴到该文件中的任何其他键下方:
nano ~/.ssh/authorized_keys
然后保存Ctl+O
,退出文件Ctl+X
,退出 SSH 会话exit
并尝试重新登录以确认它已成功。如果它不要求输入密码,则表示它已成功。