SSH 在ssh-copy-id 以后仍需输入密码的问题

最近在使用Ansible,基于SSH。api

远程服务器IP: bash

192.168.200.193

如下说起的远程服务器都为该服务器。服务器

远程用户:ssh

ansible_user

在本地服务器中,ssh-keygen生成密钥以后,将经过ssh-copi-id将生成的公钥添加到远程服务器:ui

ssh-copy-id ansible_user@192.168.200.193

而后登陆到远程服务器,在/home/ansible/.ssh/authorized_keys文件中可以看到本地服务器中生成公钥。spa

而后在本地服务器中使用ssh远程登陆:日志

ssh ansible_user@192.168.200.193

奇怪的是,仍然须要输入密码。但在远程服务器上新建一个用户,执行上面的步骤,却可以生效。code

若是此时使用ansible执行一些操做的话还会获得以下错误:blog

192.168.200.193 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).\r\n",
    "unreachable": true
}

看样子是权限的问题。ip

而且在/var/log/secure看到日志:

Authentication refused: bad ownership or modes for file /home/ansible_user/.ssh/authorized_keys

这时候观察ansible_user家目录的属性发现确实有点异常:

drwx------  12    1001 ansible_user  4096 3月  20 14:11 ansible_user

从/etc/passwd文件中看到ansible_user的信息:

ansible_user:x:0:0::/home/ansible_user:/bin/bash

这里跟家目录明显不符,记起以前经过root用户强行将ansible_user的uid改成了0。这也是致使家目录所属用户是UID(1001),而不是用户名的缘由。

如今将/etc/passwd中的UID 0 改成1001便可。

 

固然出现该状况的还有一些其余缘由,我的以为这个是比较奇怪的缘由之一。