已添加 SSH 公钥但仍提示输入密码

Mik*_*eyR 5 ssh openssh

我在尝试设置以便使用笔记本电脑连接到 HTPC 时遇到错误,我已按照ubuntu 帮助中的指南 进行操作

这是我在远程主机上的 ~/.ssh/ 权限

-rw------- 1 htpc htpc  398 Feb 29 15:16 authorized_keys
-rw------- 1 htpc htpc 1675 Feb 29 15:15 id_rsa
-rw-r--r-- 1 htpc htpc  391 Feb 29 15:15 id_rsa.pub
Run Code Online (Sandbox Code Playgroud)

这是我在远程主机上的 /etc/ssh/sshd_config 文件

# Authentication: 
LoginGraceTime 120 
PermitRootLogin without-password 
StrictModes yes
RSAAuthentication yes 
PubkeyAuthentication yes 
AuthorizedKeysFile      %h/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)

当我尝试通过 SSH 从本地计算机进入时,即使我的公共 ssh 密钥位于远程主机上的authorized_keys 内,它仍然要求我输入密码。

从本地计算机连接到 htpc 时的调试日志

debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/mikeyr/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/mikeyr/.ssh/id_dsa
debug1: Trying private key: /home/mikeyr/.ssh/id_ecdsa
debug1: Trying private key: /home/mikeyr/.ssh/id_ed25519
debug1: Next authentication method: password
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用我的路由器,让它正常工作没有任何问题。

Pis*_*ing 3

请注意,您的/etc/ssh/sshd_config包含行

 StrictModes yes
Run Code Online (Sandbox Code Playgroud)

指定 sshd 在接受登录之前是否应检查文件模式以及用户文件和主目录的所有权。这通常是可取的,因为新手有时会意外地将其目录或文件设置为全局可写。默认值为“是”。

换句话说,~远程主机上的主目录应该由您拥有和组拥有(在这种情况下,这可能意味着所有者htpc和组htpc),并且只能由您(也可能是您的组)写入:这意味着不能写入最后一列(“世界”)

$ ls -la ~/
drwxr-xr-x 41 htpc htpc .
Run Code Online (Sandbox Code Playgroud)

请注意,最后一部分说r-x(不是世界可写的),NOT rwx

如果最后一个三元组中有 a rwx,则需要删除写权限:

chmod a-w ~
Run Code Online (Sandbox Code Playgroud)

对于~/.ssh文件夹和也是如此~/.ssh/authorized_keys。我建议chmod 700 ~/.ssh只授予您自己对文件夹和chmod 600 ~/.ssh/authorized_keys文件的访问权限。

(另请参阅https://unix.stackexchange.com/a/16981/5477了解更多服务器端调试工具)