我想通过 ssh 将 ansible 连接到 EC2。我在本地计算机(ubuntu)上创建了一个密钥对,并使用 ssh-copy-id 将其复制到我的 EC2 实例。复制成功,但当我想连接到我的实例时出现以下错误:
Failed to connect to the host via ssh: [email protected]: Permission denied (publickey)
当我检查远程计算机上的 auth.log 文件时,我看到以下日志:
invalid user usuario from 187.xx.xx.xx port 47988
这是我的 etc/ansible/hosts 文件
[host1]
github ansible_host=13.xxx.xxx.xx ansible_user=root
任何帮助都将不胜感激。谢谢
答案1
一般来说,我们应该使用域凭证而不是基于密钥的身份验证来从控制节点到任何远程服务器运行剧本。
但您尝试使用 root 用户和密钥进行身份验证。因此请按照以下步骤操作:
- 创建一个名为 ansible 的用户,并在控制节点(ansible 主服务器)为用户“ansible”创建密钥。
- 如果您为该用户创建了密钥,将获得两个文件私钥和公钥。
- 将公钥内容复制到
“/home/ansible/.ssh/authorized_keys”
您想要通过 ansible 控制节点管理的远程服务器中。 现在使用以下命令检查 SSH
ssh -i /path/to/private-key ansible@<remoteserverip>
希望这可以帮助。
关于 ansible 配置中会有一个参数/etc/ansible/ansible.cfg
提到 private。
private_key_file = /path/to/private-key
答案2
我需要设置密码验证 是在远程服务器上的 sshd_config 文件中,问题得到了解决