2015-11-08 471 views
2

我想添加我的私人git服务器的ssh密钥到known_hosts文件中的1.9.3,但它不起作用。如何使用ansible将主机添加到known_host文件?

我有我的剧本以下条目:

- name: add SSH host key 
    known_hosts: name='myhost.com' 
       key="{{ lookup('file', 'host_key.pub') }}" 

我抄/etc/ssh/ssh_host_rsa_key.pub到host_key.pub和文件看起来像:

ssh-rsa AAAAB3NzaC1... [email protected] 

如果我运行我的playbook我总是得到以下错误信息:

TASK: [add SSH host key] 
****************************************************** 
failed: [default] => {"cmd": "/usr/bin/ssh-keygen -F myhost.com -f /tmp/tmpe5KNIW", "failed": true, "rc": 1} 

我在做什么错了?

+0

如果您手动运行命令'ssh-keygen -v -F myhost.com -f/path/to/host_key.pub',会发生什么情况。这实际上与Ansible试图调用的命令完全相同,因此希望能够报告Ansible遇到的错误。确保您以与运行PlayBook的用户相同的用户身份运行该命令。 –

回答

3

远程主机公钥的副本需要一个名称,该名称需要与您为已知主机指定的名称相匹配。

在你的情况,在前面加上"myhost.com "host_key.pub密钥文件如下:

myhost.com ssh-rsa AAAAB3NzaC1... [email protected] 

参考: Ansibleknown_hosts module,特别是参数

2

使用SSH- keyscan生成host_key.pub是另一种方式。

ssh-keyscan myhost.com > host_key.pub 

该命令将生成这样的格式。

$ ssh-keyscan github.com > github.com.pub 
# github.com SSH-2.0-libssh-0.7.0 
# github.com SSH-2.0-libssh-0.7.0 

$ cat github.com.pub 
github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ== 
+2

'ssh-keyscan -t ecdsa-sha2-nistp256 myhost.com> test1.pub'对于known_hosts更好 –

相关问题