我正在尝试在一些服务器上运行Ansible playbook来完成设置。为了做到这一点,我创建了一个dev清单的主机文件:
all:
servers:
hosts:
my_server1:
my_server2:
vars:
ansible_ssh_user: myremoteuser
ansible_ssh_private_key_file: "{{ private_key }}"
我从我的保险库中获取私钥,方法如下: private_key: "{{vault_private_key | b64decode}}"
vault_private_key
是我生成的2048位RSA密钥的base64编码版本。 我可以在错误消息中正确解码这个字符串。
"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
中是否有生成的公钥,我通过grep公钥文本进行了验证。
我可以通过命令行ssh登陆。当我尝试设置私钥时,是否有遗漏的步骤?
ssh -i ~/.ssh/server_key myremoteuser@my_server1
其中server_key文件具有以下权限:-rw------- - Niruansible_ssh_private_key_file: ~/.ssh/server_key
,然后我就能够ping通了。 - Niruvars.yml
文件,包括以下内容:private_key: "{{vault_private_key | b64decode}}" private_key_file: ~/.ssh/server_key
然后在我的 playbook 中:- hosts: localhost ... tasks: - tempfile: state: file suffix: pem register: temp_key - template: src: templates/server_key.j2 dest: "{{ private_key_file }}" vars: ssh_private_key: "{{ private_key }}"``` 如果您能将此添加到您的答案中,我会接受它。我希望不需要将其写入临时文件。
- Niru