Mac OS X ElCapitan下Git Push遇SSH连接关闭问题求助
ssh_exchange_identification: Connection closed by remote host的问题 从你提供的ssh -vvv localhost调试输出里,我注意到一个关键信息:
debug1: Executing proxy command: exec ssh -q -W localhost:22 gateway.example.com
这说明你的SSH配置里正在尝试通过gateway.example.com这个代理服务器连接localhost,但你贴出的~/.ssh/config内容里并没有这部分代理配置——要么是你没贴全配置文件,要么是存在重复的Host *段(输出里提到了config的第1行和第18行都应用了*的选项),其中包含了ProxyCommand设置。这很可能就是导致连接失败的核心原因。
下面是具体的排查和解决步骤:
临时禁用代理测试:
先执行这条命令绕开代理尝试连接本地SSH,看是否能正常工作:ssh -vvv -o ProxyCommand=none localhost如果这次能成功连接,那就坐实了代理配置是问题根源。
清理SSH配置中的代理设置:
打开完整的~/.ssh/config文件,查找所有包含ProxyCommand的行,直接删除这些配置。如果你的全局代理是必须的,但只是针对GitHub不需要,那就单独给GitHub加一段配置:Host github.com ProxyCommand none IdentityFile ~/.ssh/id_rsa Protocol 2这样GitHub的连接就会跳过代理,其他主机依然可以使用全局配置。
检查本地SSH服务是否运行:
在Mac上打开「系统偏好设置」→「共享」,确认「远程登录」选项是否勾选开启。如果没开,勾选后再测试ssh localhost是否能正常连接——本地SSH服务没启动也会导致这个错误。检查防火墙设置:
打开「系统偏好设置」→「安全性与隐私」→「防火墙」,点击「防火墙选项」,确认是否允许「远程登录(sshd)」接收连接。如果没有,添加并允许它。
按照这些步骤排查后,应该能解决你的连接问题。如果还是不行,可以再贴出完整的~/.ssh/config文件和ssh -vvv github.com的输出,方便进一步定位。
内容的提问来源于stack exchange,提问作者Bala




