最近在使用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便可。
固然出現該狀況的還有一些其餘緣由,我的以爲這個是比較奇怪的緣由之一。