You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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时,出现两个错误:

  1. 无法将主机添加到known_hosts文件
  2. 因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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 13:59:54