【问题标题】:SSH private key format for Ansible used in Windows Subsystem for Linux (using PuttyGen to generate the key pair)适用于 Linux 的 Windows 子系统中使用的 Ansible 的 SSH 私钥格式(使用 PuttyGen 生成密钥对)
【发布时间】:2019-08-08 07:21:42
【问题描述】:

我尝试学习/使用 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 prints:

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-----

如果使用“强制新文件格式”导出也是这样

-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----

知道我做错了什么吗?

【问题讨论】:

    标签: ansible ssh-keys windows-subsystem-for-linux


    【解决方案1】:

    必要步骤使用星座 Ansible、WinSubSystemLinux 和 Putty

    1. 在 PuttyGen 中加载您的私钥文件(或生成一个)
      • 如果有密码,请删除!
    2. 菜单转换->导出 OpenSSH 密钥
      • 不是“强制新文件格式”
      • 这会问你“你确定不用密码保存吗?” -> 是的

    这是你可以在 ansible.xml 中使用的文件。


    其余的与putty无关。

    • 您可以在 /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
    

    【讨论】:

      猜你喜欢
      • 2011-01-14
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      • 2016-12-24
      • 1970-01-01
      • 2011-02-26
      • 1970-01-01
      • 2016-09-15
      相关资源
      最近更新 更多