为什么我不能在 Arch Linux 上通过 ssh 使用公钥/私钥身份验证?

为什么我不能在 Arch Linux 上通过 ssh 使用公钥/私钥身份验证?

我在 Ubuntu 机器上进行了以下设置:

~/dotfiles/authorized_keys2
~/.ssh/authorized_keys2 -> /home/wayne/dotfiles/authorized_keys2

我在 Arch 机器上有相同的设置,但是当我使用 -v 连接时,

debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/wayne/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password

我发现这一页在 Arch Wiki 上,有这样一行:

$ chmod 600 ~/.ssh/authorized_keys

所以我添加了另一个符号链接:

authorized_keys -> /home/wayne/dotfiles/authorized_keys2

但仍然没有骰子。是的,我确保 中存在正确的密钥authorized_keys

为什么我无法使用我的密钥进行连接?

编辑:

我的权限在我的 home 和 ssh 文件夹(和密钥文件)上正确设置:

drwxr-x--x 150 wayne       family  13k Aug 27 07:38 wayne/
drwx------   2 wayne       family 4.1k Aug 27 07:24 .ssh/
-rw-------   1 wayne       family 6.4k Aug 20 07:01 authorized_keys2

答案1

authorized_keys文件和指向该文件的目录的权限必须受到足够的限制:它们必须只能由您或 root 写入(如果您是该组中的单个用户,最新版本的 OpenSSH 还允许它们是组可写的)。看为什么使用公钥身份验证时,我仍然收到 ssh 密码提示?完整的故事。

在你的情况下,authorized_keys是一个符号链接。从 OpenSSH 5.9 开始(我没有检查其他版本),在这种情况下,服务器会检查通往符号链接最终目标的权限,并扩展所有中间符号链接(规范路径)。假设 的所有组成部分除了最后一个是常规文件之外都是目录,OpenSSH 将检查、和/home/wayne/dotfiles/authorized_keys2的权限。/home/wayne/home/wayne/dotfiles/home/wayne/dotfiles/authorized_keys2

如果您拥有服务器的 root 访问权限,请检查服务器日志中是否有以下形式的消息bad ownership or modes for …

答案2

我遇到了同样的问题,通过更改 /home/user 目录的权限得到解决,该目录不正确,应该是 chmod 755

答案3

如果 SELINUX 设置为 enforcing,并且authorized_keys 文件的规范路径具有任何目录的符号链接,则它将失败。您需要将 SELINUX 设置为禁用。

相关内容