如何通过SSH直接登录Vagrant虚拟机中Ansible创建的用户?
解决Vagrant虚拟机中Simone用户SSH登录失败问题
问题背景
已通过Vagrant创建虚拟机vm1(IP:192.168.20.11),并使用Ansible完成以下配置:
- 创建用户
simone并赋予sudo权限 - 将本地生成的ED25519公钥添加到
simone用户的authorized_keys文件中
但本地直接执行ssh -i ~/.ssh/ansible simone@192.168.20.11时,出现两个错误:
- 无法将主机添加到
known_hosts文件 - 因
Too many authentication failures被服务器断开连接
解决方案
1. 修复known_hosts文件权限
错误提示Failed to add the host to the list of known hosts (/home/edith/.ssh/known_hosts),说明当前用户对该文件无写入权限:
- 检查文件权限:
ls -l ~/.ssh/known_hosts - 若文件属主为root,修改为当前用户:
sudo chown edith:edith ~/.ssh/known_hosts sudo chmod 644 ~/.ssh/known_hosts - 若文件不存在,手动创建并设置权限:
touch ~/.ssh/known_hosts chmod 644 ~/.ssh/known_hosts
2. 强制SSH仅使用指定密钥
SSH默认会遍历本地所有可用密钥尝试登录,导致服务器触发失败次数限制。登录时添加IdentitiesOnly=yes参数,强制仅使用指定私钥:
ssh -i ~/.ssh/ansible -o IdentitiesOnly=yes simone@192.168.20.11
永久配置(可选)
在本地~/.ssh/config中添加主机配置,避免每次输入参数:
Host 192.168.20.11 User simone IdentityFile ~/.ssh/ansible IdentitiesOnly yes StrictHostKeyChecking accept-new
配置完成后,直接执行ssh 192.168.20.11即可登录。
3. 验证虚拟机中simone用户的SSH目录权限
SSH对用户~/.ssh目录及authorized_keys文件权限有严格要求,权限错误会导致密钥登录被拒绝:
登录到vm1虚拟机,执行以下命令修复权限:
sudo chown -R simone:simone /home/simone/.ssh sudo chmod 700 /home/simone/.ssh sudo chmod 600 /home/simone/.ssh/authorized_keys
4. 检查SSH服务器配置(可选)
确保虚拟机的SSH服务允许密钥登录:
- 查看配置:
sudo grep -E "PubkeyAuthentication|PasswordAuthentication" /etc/ssh/sshd_config - 确保
PubkeyAuthentication yes,若需要临时测试可开启PasswordAuthentication yes,验证完成后再关闭。修改配置后重启SSH服务:sudo systemctl restart sshd
内容的提问来源于stack exchange,提问作者suravshrestha
相关产品推荐
相关产品推荐

