ansible - 适用于 Linux 的 Windows 子系统中使用的 Ansible 的 SSH 私钥格式(使用 PuttyGen 生成密钥对)
问题描述
我尝试学习/使用 Ansible 来设置我的新服务器。控制机是一台 Windows PC。我在 Linux 的 Windows 子系统中使用 Debian 并成功安装了 ansible。我可以使用带有(受密码保护的)私钥的腻子连接到服务器(真正的 Debian)(我在创建时将公钥复制到服务器(它是 Hetzner 云服务器))。但是当我尝试跑步时,ansible -m ping all
我得到了
server5 | UNREACHABLE! => {
"changed": false,
"msg": "not a valid OPENSSH private key file",
"unreachable": true
}
我通过使用 puttygen 导出私钥生成了私钥。用“强制新文件格式”
导出它后,我得到了
server5 | UNREACHABLE! => {
"changed": false,
"msg": "Invalid/incorrect username/password. Private key file is encrypted",
"unreachable": true
}
所以我生成了一个没有密码的私钥文件,看看这是否有帮助。这个私钥也适用于 putty 但 ansible 打印:
server5 | UNREACHABLE! => {
"changed": false,
"msg": "Invalid key",
"unreachable": true
}
主机文件的内容:
server5 ansible_host=xxx.xx.xx.xx ansible_user=root ansible_ssh_private_key_file=prikey.pem
密钥文件如下所示
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
如果使用“强制新文件格式”导出,就像这样
-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----
知道我做错了什么吗?
解决方案
使用星座 Ansible、WinSubSystemLinux 和 Putty的必要步骤
- 在 PuttyGen 中加载您的私钥文件(或生成一个)
- 如果有密码,请删除!
- 菜单转换->导出 OpenSSH 密钥
- 不是“强制新文件格式”
- 这会问你“你确定不用密码保存吗?” -> 是的
那是您可以在 ansible.xml 中使用的文件。
其余的与腻子无关。
- 您可以在/mnt /hd/path/to/file.pem的 Linux 子系统中找到生成的密钥文件
- 例如将其复制到 ~/.ssh/yourkeyfile
chmod 400 ~/.ssh/yourkeyfile
仅使其用户可读。否则,ansible 将无法连接并显示“要求您的私钥文件不能被其他人访问。此私钥将被忽略。”
在您的库存/主机文件中,例如:
serverx ansible_host=xxx.xxx.xxx.xxx ansible_ssh_private_key_file=~/.ssh/yourkeyfile
推荐阅读
- azure - 如何通过扩展将 azure vm 加入到本地域?
- ruby-on-rails - 错误“必须存在” - 在轨道上创建寄存器
- r - 根据条件添加列;保留值,每次满足条件时递增
- shell - Zip - 如何使用数据库黑名单从 zip 中排除文件?
- javascript - 如何在 puppeteer-cluster 中使用 puppeteer.connect()?
- c++ - 需要帮助比较开关盒以确保选择的卡片不相同
- python - 在同一脚本中创建和激活 Conda 环境
- python - 如何在 tkinter 中更新由 matplotlib 创建的图形
- algorithm - 目标未知时的搜索算法
- r - 使用 mutate_at 使用数据框中的多个其他列创建新列