使用 ansibleauthorized_module 复制公钥后,我无法通过 ssh 无密码连接到远程主机。
如果您需要查看其他内容,请告诉我。
[xkadutut@wpas .ssh]$ ls -la
total 4
drwx------. 1 xkadutut staff 30 Dec 22 06:26 .
drwxrwxrwx. 1 xkadutut staff 204 Dec 22 05:40 ..
-rw-------. 1 xkadutut staff 395 Dec 22 06:26 authorized_keys
[xkadutut@wpas .ssh]$ pwd
/export/home/staff/xkadutut/.ssh
[xkadutut@wpas .ssh]$
```
ansible
bash-4.2$ sudo cat kwaku_authorized_keys.yml
---
- hosts: kwaku
become: true
tasks:
- name: set authorized public keys for Kwaku
authorized_key:
user: xkadutut
state: present
key: "{{ lookup('file', '/export/home/staff/kadutut/.ssh/id_rsa.pub') }}"
After I ran the playbook, I tried to ssh to wpas( remote host), and it still asked me for a password.
bash-4.2$ ssh xkadutut@wpas-prod
**********************************************************
This system is for authorized users only; system access is
monitored. By using this system you expressly consent to
this monitoring. Evidence of unauthorized access will be
provided to the appropriate law enforcement agencies.
**********************************************************
xkadutut@wpas-prod's password:
答案1
这可能不是您唯一的问题,但远程系统上的主目录似乎权限过于宽松,并且 OpenSSH 服务器可能会忽略您的authorized_keys
文件。
drwx------. 1 xkadutut staff 30 Dec 22 06:26 .
drwxrwxrwx. 1 xkadutut staff 204 Dec 22 05:40 ..
-rw-------. 1 xkadutut staff 395 Dec 22 06:26 authorized_keys
据此,您的主目录 ( /export/home/staff/xkadutut
) 是全局和组可写的。 OpenSSH服务器默认会忽略authorized_keys
这种情况。看到这段来自sshd 手册:
〜/.ssh/authorized_keys
列出可用于以此用户身份登录的公钥(DSA、ECDSA、Ed25519、RSA)。该文件的格式如上所述。文件内容不是高度敏感,但建议用户的权限是读/写,其他人无法访问。
如果其他用户可写入该文件、~/.ssh 目录或用户的主目录,则该文件可能会被未经授权的用户修改或替换。在这种情况下,sshd 将不允许使用它,除非 StrictModes 选项已设置为“no”。
修复方法是从您的主目录中删除组和世界写入权限:
chmod go-w /export/home/staff/xkadutut