【Ansible + Semaphore】SSH 连接时出现“无法通过SSH连接到主机:主机密钥验证失败。”的致命错误
当启动Ansible + Semaphore(Ansible的GUI)的Docker容器并运行playbook时,会显示以下信息,表示SSH连接失败。
致命错误 ******** 不可达!=> {“changed”: false, “msg”: “通过SSH无法连接到主机:主机密钥验证失败。”, “unreachable”: true}
总结(今北产业)
-
- 由于过去的SSH连接信息(〜/ .ssh / authorized_keys)与当前的SSH连接信息不同,因此发生了错误。在尝试和错误时,可能已经写入了连接信息。
-
- 你可以从运行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