【Ansible + Semaphore】SSH 连接时出现“无法通过SSH连接到主机:主机密钥验证失败。”的致命错误

当启动Ansible + Semaphore(Ansible的GUI)的Docker容器并运行playbook时,会显示以下信息,表示SSH连接失败。
致命错误 ******** 不可达!=> {“changed”: false, “msg”: “通过SSH无法连接到主机:主机密钥验证失败。”, “unreachable”: true}

总结(今北产业)

    1. 由于过去的SSH连接信息(〜/ .ssh / authorized_keys)与当前的SSH连接信息不同,因此发生了错误。在尝试和错误时,可能已经写入了连接信息。

 

    1. 你可以从运行Ansible的机器或者运行的容器内的authorized_keys中删除“连接目标主机信息”,或者忽略检查。

 

    将环境变量ANSIBLE_HOST_KEY_CHECKING设置为False,将不再检查本地(运行Ansible的机器)的authorized_keys。

简而言之,我需要一个动态的docker-compose.yml文件。

以下是在AMD64和ARM64机器上运行的带有Semaphore和Ansible的Docker镜像的compose文件(请将替换为您自己的信息)启动。

在执行docker compose up -d命令时,DB被设置为内置的”bolt”数据库,并在当前目录下的./docker_ansible/文件夹中创建了一个目录,其中保存了DB和配置文件。

services:
  semaphore:
    restart: unless-stopped
    ports:
      - 3000:3000
    image: semaphoreui/semaphore:latest
    environment:
      SEMAPHORE_DB_DIALECT: bolt
      SEMAPHORE_ADMIN_PASSWORD: <your admin password>
      SEMAPHORE_ADMIN_NAME: <your admin display name>
      SEMAPHORE_ADMIN_EMAIL: <your admin email address>
      SEMAPHORE_ADMIN: <your admin login name>
      ANSIBLE_HOST_KEY_CHECKING: False
    volumes:
      # config.json location
      - ./docker_ansible:/etc/semaphore
      # database.boltdb location (Not required if using mysql or postgres)
      - ./docker_ansible:/var/lib/semaphore

参考资料

HOST_KEY_CHECKING @ docs.ansible.com

Failed to connect to the host via ssh: Host key verification failed.\r\n @ StackOverflow.com
#675 Failed to connect to the host via ssh | Issues | ansible-semaphore @ GitHub

广告
将在 10 秒后关闭
bannerAds