我们有一些需要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