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

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

我在尝试设置时遇到错误,因此我可以使用笔记本电脑连接到 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

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

# Authentication: 
LoginGraceTime 120 
PermitRootLogin without-password 
StrictModes yes
RSAAuthentication yes 
PubkeyAuthentication yes 
AuthorizedKeysFile      %h/.ssh/authorized_keys

当我尝试通过 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

我也尝试过在我的路由器上进行操作,并且没有任何问题。

答案1

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

 StrictModes yes

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

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

$ ls -la ~/
drwxr-xr-x 41 htpc htpc .

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

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

chmod a-w ~

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

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

答案2

最好验证目标服务器/etc/ssh/sshd_config以检查将源公钥复制到何处(即authorized_keys目标服务器中的位置)

就我而言/etc/ssh/keys/%u/authorized_keys2

/etc/ssh/sshd_config

# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile /etc/ssh/keys/%u/authorized_keys2

#AuthorizedPrincipalsFile none

authorized_keys因此,将您的复制到相应位置后,尝试 ssh 无密码连接。

答案3

也许在生成 ssh-key 时您已为密钥添加了密码。

生成新的 ssh 密钥ssh-keygen

Enter passphrase (empty for no passphrase):<- 按回车键,默认(无密码)。

然后ssh-copy-id user@host

相关内容