Windows Linux 子系统中使用的 Ansible 的 SSH 私钥格式(使用 PuttyGen 生成密钥对)
SSH private key format for Ansible used in Windows Subsystem for Linux (using PuttyGen to generate the key pair)
我尝试 learn/use Ansible 来设置我的新服务器。控制机是 Windows PC。我在 Linux 的 Windows 子系统中使用 Debian,并成功安装了 ansible。
我可以使用带有(密码保护)私钥的腻子连接到服务器(真正的 Debian)(我在创建时将 public 密钥复制到服务器(它是 Hetzner 云服务器))。
但是当我尝试 运行 ansible -m ping all
我得到
server5 | UNREACHABLE! => {
"changed": false,
"msg": "not a valid OPENSSH private key file",
"unreachable": true
}
我用 puttygen 导出生成了私钥。
用 "force new file format" 导出后 我得到了
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
}
hosts文件内容:
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-----
如果使用 "force new file format"
导出,则像这样
-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----
知道我哪里做错了吗?
必要步骤使用星座Ansible、WinSubSystemLinux和Putty
- 在 PuttyGen 中加载您的私钥文件(或生成一个)
- 如果有,请删除密码!
- 菜单转换->导出 OpenSSH 密钥
- 不是"force new file format"
- 这会问你 "are you sure to save without password?" -> 是
这是你可以在 ansible 中使用的文件。
其余与putty无关
- 您可以在 Linux 子系统中找到生成的密钥文件,位于 /mnt/hd/path/to/file.pem
- 例如复制到~/.ssh/yourkeyfile
chmod 400 ~/.ssh/yourkeyfile
仅让您的用户可读。否则,ansible 将无法连接显示 "It is required that your private key files are NOT accessible by others. This private key will be ignored."
在您的 inventory/hosts 文件中,例如:
serverx ansible_host=xxx.xxx.xxx.xxx ansible_ssh_private_key_file=~/.ssh/yourkeyfile
我尝试 learn/use Ansible 来设置我的新服务器。控制机是 Windows PC。我在 Linux 的 Windows 子系统中使用 Debian,并成功安装了 ansible。
我可以使用带有(密码保护)私钥的腻子连接到服务器(真正的 Debian)(我在创建时将 public 密钥复制到服务器(它是 Hetzner 云服务器))。
但是当我尝试 运行 ansible -m ping all
我得到
server5 | UNREACHABLE! => {
"changed": false,
"msg": "not a valid OPENSSH private key file",
"unreachable": true
}
我用 puttygen 导出生成了私钥。
用 "force new file format" 导出后 我得到了
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
}
hosts文件内容:
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-----
如果使用 "force new file format"
导出,则像这样-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----
知道我哪里做错了吗?
必要步骤使用星座Ansible、WinSubSystemLinux和Putty
- 在 PuttyGen 中加载您的私钥文件(或生成一个)
- 如果有,请删除密码!
- 菜单转换->导出 OpenSSH 密钥
- 不是"force new file format"
- 这会问你 "are you sure to save without password?" -> 是
这是你可以在 ansible 中使用的文件。
其余与putty无关
- 您可以在 Linux 子系统中找到生成的密钥文件,位于 /mnt/hd/path/to/file.pem
- 例如复制到~/.ssh/yourkeyfile
chmod 400 ~/.ssh/yourkeyfile
仅让您的用户可读。否则,ansible 将无法连接显示 "It is required that your private key files are NOT accessible by others. This private key will be ignored."
在您的 inventory/hosts 文件中,例如:
serverx ansible_host=xxx.xxx.xxx.xxx ansible_ssh_private_key_file=~/.ssh/yourkeyfile