SSH到本地没有密码

我们有一些需要rsync而不input密码的脚本。 我正在尝试SSH到本地机器(本身)。 我无法得到它的工作。 它总是要求我input密码。 它可以很好地SSH连接到远程机器。

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

这是我所做的尝试,并得到这个工作。

我使用创build私钥

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

没有密码。

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

 ssh servername.domain 

它要求我input密码。 我试图玩与该文件的权限无济于事。

我注意到,当我使用密码SSH时,我在/ var / log / secure日志文件中得到这个错误。 不知道这是否相关,但错误如下。

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

当执行ssh -v并比较没有提示input密码(远程)的工作结果和总是提示(本地)的结果时,我可以看到一些差别。 首先是失败显示:

 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 

我从那以后发现SSH在禁用selinux的时候工作。 我认为这个问题可能是由于用户主目录的非标准位置。

当您使用密钥时,如果.ssh目录和/或authorized_keys文件上的perms不正确,则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