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

UTM中Ubuntu 22.04虚拟机无法使用SSH密钥连接GitHub求助

UTM中Ubuntu 22.04虚拟机无法使用SSH密钥连接GitHub求助

看起来你已经走完了SSH密钥生成、添加到ssh-agent,还有把公钥上传到GitHub这些流程,但连接还是卡在密钥协商的环节(从日志能看到停在debug1: expecting SSH2_MSG_KEX_ECDH_REPLY),结合你是在UTM的Ubuntu虚拟机里,咱们可以从这几个方向排查解决:

  • 先确认网络连接稳定性
    UTM默认的“共享网络”模式偶尔会有端口转发或丢包问题,你先试试ping GitHub看是否稳定:

    ping github.com -c 10
    

    如果丢包率很高,建议把UTM的网络模式改成“桥接网络”,让虚拟机直接获取局域网IP,和物理机用一样的网络环境,大概率能解决连接中断的问题。

  • 给GitHub指定专属SSH配置,避免密钥冲突
    从日志里看到SSH同时加载了id_rsa和id_ed25519密钥,虽然你用的是ed25519,但旧的RSA密钥可能会干扰认证流程。咱们可以在~/.ssh/config里专门为GitHub指定使用ed25519密钥:
    先创建或编辑这个配置文件:

    nano ~/.ssh/config
    

    粘贴以下内容:

    Host github.com
      HostName github.com
      User git
      IdentityFile ~/.ssh/id_ed25519
      IdentitiesOnly yes
    

    保存退出后,直接测试SSH连接GitHub是否成功:

    ssh -T git@github.com
    

    如果成功,会显示你的GitHub用户名,这时候再试git pull应该就没问题了。

  • 排查防火墙和代理干扰
    虚拟机里如果开了ufw防火墙,可能会阻断SSH的22端口,你可以临时关闭防火墙测试:

    sudo ufw disable
    

    另外,要是主机或者虚拟机用了代理,也可能影响SSH连接,先把代理关掉再试一次连接,看看是不是代理拦截了流量。

  • 重新生成密钥并验证公钥格式
    有时候密钥文件可能意外损坏,或者公钥复制的时候没全选到。你可以重新生成一次密钥(记得先备份旧的密钥文件):

    ssh-keygen -t ed25519 -C "jake@ubuntu-vm"
    

    复制公钥的时候,确保把~/.ssh/id_ed25519.pub里的内容完整复制,包括最后的注释部分,再粘贴到GitHub的SSH密钥设置里。

备注:内容来源于stack exchange,提问作者Jake He

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 13:22:59