尽管有 ssh-copy-id,ssh 仍提示输入密码

尽管有 ssh-copy-id,ssh 仍提示输入密码

我已经在远程服务器上使用公钥身份验证一段时间了,用于远程 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$HOMEchmod o-wx ~/

一起:

chmod g-w ~/
chmod o-wx ~/

请注意,我不确定是否o-x有必要,我只是作为预防措施运行它。

答案4

如果您的权限设置正确,您可能需要尝试将私钥添加到您的 ssh 代理:

  1. 如果未启动,则启动 ssh-agent:

    eval $(ssh-agent)
    
  2. 使用以下命令将您的私钥添加到 ssh 代理ssh-add(替换id_rsa_key为您的私钥名称):

    ssh-add ~/.ssh/id_rsa_key  
    
  3. 尝试ssh连接到您的远程服务器。

相关内容