首页 > 解决方案 > Ansible 的随机 SSH 权限问题

问题描述

我在使用 ansible 时遇到了一个奇怪的问题,我正在尝试在我的服务器上创建一个初始设置,以便我可以使用 SSH 密钥而不是密码,所以我正在做的是针对每个服务器组,我有一个正在创建我的路径SSH 密钥,使用 ansible 通过密码提示在服务器上授权密钥,这样之后我就不需要再次使用密码,除非我重新生成我的密钥。

我通过创建我的 SSH 密钥ssh-keygen -f ./ssh/server/id_rsa

我有我的主机文件设置,其中包含 SSH 密钥的位置,如下所示

[server]
172.16.0.211

[server:vars]
ansible_user=ubuntu
ansible_ssh_private_key_file=./ssh/server/id_rsa.pub

我的 ansible playbook 中有以下内容

- hosts: all
  gather_facts: yes
  become: yes
  tasks:
    - name: Set authorized key for user {{ ansible_user }} copying it from current user
      authorized_key:
        user: "{{ ansible_user }}"
        state: present
        key: "{{ lookup('file', '{{ ansible_ssh_private_key_file }}') }}"

我正在运行ansible-playbook -K -k ./ssh.yaml --verbose,所以我必须先输入我的密码,然后才能设置我的 SSH 密钥,它可以工作,它会更新,我可以使用它运行 pingansible all --module-name ping并且它可以正常工作..

172.16.0.211 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

但是随机地,如果我再次运行 ping 或使用新的 SSH 密钥运行任何其他剧本.. 它说

Failed to connect to the host via ssh: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r\n@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @\r\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r\nPermissions 0644 for './ssh/id_rsa.pub' are too open.\r\nIt is required that your private key files are NOT accessible by others.\r\nThis private key will be ignored.\r\nLoad key \"./ssh/server/id_rsa.pub\

我试图给它使用权限,chmod 600 ./ssh/server/id_rsa.pub但现在 ping 说

172.16.0.211 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: Load key \"./ssh/server/id_rsa.pub\": invalid format\r\nubuntu@172.16.0.211: Permission denied (publickey,password).",
    "unreachable": true
}

我实际上能够让它工作几分钟..我将它发送到多个服务器..但它显示出类似的错误,但仅适用于其中 2 个......

172.16.0.212 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
172.16.0.210 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
172.16.0.211 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
172.16.0.213 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
172.16.0.214 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r\n@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @\r\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r\nPermissions 0644 for './ssh/server/id_rsa.pub' are too open.\r\nIt is required that your private key files are NOT accessible by others.\r\nThis private key will be ignored.\r\nLoad key \"./ssh/server/id_rsa.pub\": bad permissions\r\nubuntu@172.16.0.214: Permission denied (publickey,password).",
    "unreachable": true
}
172.16.0.215 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r\n@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @\r\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r\nPermissions 0644 for './ssh/server/id_rsa.pub' are too open.\r\nIt is required that your private key files are NOT accessible by others.\r\nThis private key will be ignored.\r\nLoad key \"./ssh/server/id_rsa.pub\": bad permissions\r\nubuntu@172.16.0.215: Permission denied (publickey,password).",
    "unreachable": true
}

我可以让它再次工作的唯一方法是再次重新生成密钥并再次复制回服务器,但再次发生

感觉不像是权限问题,因为它对其他服务器使用相同的 SSH 密钥.. ?

键入此内容时,再次运行它,现在它们都失败了。我仍然可以通过密码连接到服务器,因此服务器没有问题

有什么想法可能导致这种情况吗?

标签: sshansiblepermissions

解决方案


推荐阅读