无需密码即可通过 SSH 连接到本地

无需密码即可通过 SSH 连接到本地

我们有一些脚本需要在不输入密码的情况下进行 rsync。我试图通过 SSH 连接到本地计算机(本身)。我无法让它工作。它总是要求我输入密码。通过 SSH 连接到远程计算机可以正常工作。

我正在运行 CentOS 6。用户的主目录位于非标准位置(即它不在 /home/$USER 下)。

以下是我为尝试实现此目的而采取的措施。

我使用创建了私钥

ssh-keygen -t rsa -C "servername.domain" 

没有密码。

将生成的公钥复制到 ~/.ssh/authorized_keys 并尝试使用 SSH

ssh servername.domain

并且要求我输入密码。我尝试使用该文件的权限,但没有成功。

我注意到当我使用密码进行 SSH 时,/var/log/secure 日志文件中会出现此错误。不确定这是否相关,但错误如下。

Feb 12 09:15:34 servername unix_chkpwd[14652]: password check failed for user 

执行 ssh -v 并比较无需输入密码(远程)的 seesion 和始终提示输入密码的 seesion(本地)的结果时,我可以看到一些差异。首先是失败显示:

debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context

而工作会话仅显示第一行,后面两行并不存在。

后来我看到:

debug1: Offering public key: /myuser/.ssh/id_rsa

在工作版本中,接下来是:

debug1: Server accepts key: pkalg ssh-rsa blen 277

而在失败的版本中,其后跟着:

debug1: Trying private key: /myuser/.ssh/id_dsa
debug1: Next authentication method: password

后来我发现禁用 selinux 后 SSH 就可以正常工作。我认为问题可能是由于用户主目录的位置不标准造成的。

答案1

.ssh当您使用密钥时,如果目录和/或文件的权限authorized_keys不正确,则 ssh 将回退到密码(如果允许的话)(PasswordAuthentication Yes)。

检查 ~./ssh 上的权限是否为 700,以及 ~/.ssh/authorized_keys 权限是否为 644(或更严格)。


由于您已确定 SElinux 是导致问题的原因,并且您表示用户主目录位于非标准位置,因此请检查 /var/log/audit/audit.log 中是否存在相关的 AVC 拒绝消息。

您也可以尝试重新标记相关的目录树

semanage fcontext -a -t user_home_t "/path/to/homedir(/.*)?"
restorecon -r /path/to/homedir

相关内容