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

Ali*_*ius 38 ssh

我已经在远程服务器上使用公钥认证一段时间了,用于远程 shell 和 sshfs 安装。强制卸载我的 sshfs 目录后,我注意到 ssh 开始提示我输入密码。我尝试从任何提及本地机器的地方清除远程 .ssh/authorized_keys,并且我从对远程机器的引用中清除了本地机器。然后我重复了我的 ssh-copy-id,它提示我输入密码,然后正常返回。但是你瞧,当我通过 ssh 连接到远程服务器时,仍然提示我输入密码。我对可能是什么问题有点困惑,有什么建议吗?

Bru*_*ger 43

sshd 对 $HOME、$HOME/.ssh(两个目录)和 $HOME/.ssh/authorized_keys 的权限感到奇怪。

我的一个 linux 机器最终在我的 $HOME 目录上获得了 drwxrwxrwx 权限。在我删除 $HOME 目录中其他组的“w”权限之前,Arch linux 机器绝对不会使用公钥登录。

尝试使 $HOME 和 $HOME/.ssh/ 对组和其他人具有更多限制性权限。看看这是否不会让 sshd 发挥作用。

  • 对我来说,就是这样。我使用 ssh-copy-id 通过 RSA 密钥发送,但我仍然收到提示。在远程服务器上运行 `chmod gw homedir` 就像一个魅力。 (9认同)
  • 是的。`ssh-copy-id` 应该考虑到 `~/.ssh` 和 `~/.ssh/authorized_keys` 的权限,但也要确保你的主目录本身不是组可写的。 (6认同)

小智 20

需要以下权限:

  • .ssh文件夹:700 (drwx------)
  • 公钥: 644 (-rw-r--r--)
  • 私钥: 600 (-rw-------)


小智 11

由于在谷歌搜索此行为时,这个问题出现在第一个搜索结果中,因此我还将添加我的解决方案:

\n\n

就我而言,这与权限无关。出于任何原因(实际上我并没有费心找出原因,因为我找到了一个快速修复方法),在执行 ssh 命令时,程序没有查找正确的身份文件。\n一种解决方案是在远程服务器上手动添加 SSH 程序尝试使用的 SSH 密钥。可以通过在命令中添加 -v 来观察 SSH 程序在执行命令时做了什么:

\n\n
ssh -v username@your-host-ip-or-domain \n
Run Code Online (Sandbox Code Playgroud)\n\n

然后,您只需在本地计算机上获取 SSH 程序尝试为其查找身份文件/私钥的任何公钥,例如在 Mac 上:

\n\n
cat ~/.ssh/id_rsa.pub\n
Run Code Online (Sandbox Code Playgroud)\n\n

...并将其添加到远程的authorized_keys文件中:

\n\n
~/.ssh/authorized_keys\n
Run Code Online (Sandbox Code Playgroud)\n\n

就我而言,另一个更好的解决方案是在本地 ssh 配置文件中添加自定义主机。在我的 Mac 上是:

\n\n
/Users/my-user-name/.ssh/config\n
Run Code Online (Sandbox Code Playgroud)\n\n

例如,您可以在这里添加如下内容:

\n\n
Host mynewserver\n        HostName some.IP.number.or.domain\n        Port 20000 #if custom port is used and not the default 22\n        User the_root\n        PreferredAuthentications publickey\n        IdentityFile ~/.ssh/id_rsa_for_my_new_server\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后你只需要执行:

\n\n
ssh mynewserver\n
Run Code Online (Sandbox Code Playgroud)\n\n

...以及 Voil\xc3\xa0

\n


izz*_*tic 6

我最近也遇到了这个问题。

通过修改$HOME目录的权限来纠正它。但是,仅仅运行chmod g-w ~/并不能解决问题。此外chmod g-w ~/我还需要修改的权限others$HOME运行目录chmod o-wx ~/

一起:

chmod g-w ~/
chmod o-wx ~/
Run Code Online (Sandbox Code Playgroud)

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