我试图在一些服务器上运行剧本,我试图设置Ansible剧本。为此,我为开发清单创建了一个hosts文件:
all:
servers:
hosts:
my_server1:
my_server2:
vars:
ansible_ssh_user: myremoteuser
ansible_ssh_private_key_file: "{{ private_key }}"
我从保险库中填充private_key
,如下所示:private_key: "{{vault_private_key | b64decode}}"
vault_private_key
是我生成的base64编码的私有2048 rsa密钥,我可以看到它在错误消息中正确解码,如下所示:
"msg": "Failed to connect to the host via ssh: no such identity: -----BEGIN OPENSSH PRIVATE KEY-----n
我用下面的命令生成ssh密钥:ssh-keygen -b 2048 -t rsa -f myremoteuser_key -C myremoteuser
当我ssh到my_server1
或2
时,我可以验证/home/myremoteuser/.ssh/authorized_keys
在那里生成了公钥,我通过搜索公钥文本来验证。
我可以通过命令行ssh。在尝试设置私钥时,是否缺少某些内容?
我不能从你的问题中看出——你能确认你没有混淆私钥文件路径和私钥文件内容吗?
是否将私钥写入磁盘?如果是,您是否将权限设置为0600?SSH不会读取权限太大的私钥文件。
我怀疑你遇到了权限问题。
为什么不使用template
任务来填充私钥的内容呢?见https://docs.ansible.com/ansible/latest/collections/ansible/builtin/template_module.html
你可以在你的模板文件中放入一个变量,{{vault_private_key | b64decode}}