我已经在远程服务器上使用公钥身份验证一段时间了,用于远程 shell 使用以及 sshfs 安装。强制卸载 sshfs 目录后,我注意到 ssh 开始提示我输入密码。我尝试从本地计算机的任何提及中清除远程 .ssh/authorized_keys,并清除本地计算机对远程计算机的引用。然后我重复我的 ssh-copy-id,它提示我输入密码,然后正常返回。但你瞧,当我 ssh 到远程服务器时,系统仍然提示我输入密码。我有点困惑,不知道问题是什么,有什么建议吗?
答案1
sshd 对 $HOME、$HOME/.ssh(两个目录)和 $HOME/.ssh/authorized_keys 的权限感到奇怪。
我的一台 Linux 机器最终在我的 $HOME 目录上获得了 drwxrwxrwx 权限。 Arch linux 盒子绝对不会使用公钥登录,除非我删除了 $HOME 目录上其他组的“w”权限。
尝试使 $HOME 和 $HOME/.ssh/ 对组和其他人具有更多限制性权限。看看这是否不允许 sshd 做它的事情。
答案2
需要以下权限:
- 文件
.ssh
夹:700 (drwx------)
- 公钥:
644 (-rw-r--r--)
- 私钥:
600 (-rw-------)
答案3
我最近也遇到了这个问题。
通过修改目录的权限已更正$HOME
。然而,仅仅运行chmod g-w ~/
并不能解决问题。除此之外,我还需要通过运行来修改目录的chmod g-w ~/
权限others
$HOME
chmod o-wx ~/
一起:
chmod g-w ~/
chmod o-wx ~/
请注意,我不确定是否o-x
有必要,我只是作为预防措施运行它。
答案4
如果您的权限设置正确,您可能需要尝试将私钥添加到您的 ssh 代理:
如果未启动,则启动 ssh-agent:
eval $(ssh-agent)
使用以下命令将您的私钥添加到 ssh 代理
ssh-add
(替换id_rsa_key
为您的私钥名称):ssh-add ~/.ssh/id_rsa_key
尝试
ssh
连接到您的远程服务器。