公司网络克隆GitHub仓库SSH22端口超时 改443无效如何解决
公司网络下GitHub仓库克隆失败排查方案
首先做基础校验,排除配置不生效的低级问题:
- 校验SSH配置文件权限
SSH客户端会严格校验配置文件权限,权限不符合要求时会直接忽略自定义配置。先执行以下命令检查权限:
正常输出中,ls -ld ~/.ssh ls -l ~/.ssh/config.ssh目录权限应为drwx------(对应权限码700),config文件权限应为-rw-------(对应权限码600)。如果权限不符,依次执行以下命令修复:chmod 700 ~/.ssh chmod 600 ~/.ssh/config - 校验配置匹配规则
打开~/.ssh/config确认配置块格式正确,Host字段必须严格为github.com,不能带多余前缀后缀,缩进无异常,可补充用户名配置避免识别错误,正确格式如下:Host github.com Hostname ssh.github.com Port 443 User git
完成基础校验后,先测试443端口的SSH连通性,执行命令:
ssh -T git@ssh.github.com -p 443
- 如果命令返回
Hi xxx! You've successfully authenticated...的提示,说明SSH链路连通,重新执行克隆命令即可。 - 如果依然提示连接超时,说明公司防火墙不止拦截22端口,还对443端口上的SSH协议做了特征识别拦截,SSH over 443方案在当前网络下不可用,改用以下方案:
方案1:改用HTTPS协议克隆(兼容性最高)
公司网络一般不会拦截443端口的正常HTTPS流量,直接将克隆地址从SSH格式替换为HTTPS格式即可:
git clone https://github.com/master/migration.git
如果不想每次推送拉取都输入凭据,执行以下命令开启凭据存储:
git config --global credential.helper store
首次认证时密码字段填写GitHub个人访问令牌即可,后续操作会自动读取凭据无需重复输入。
方案2:配置Git走公司代理
如果HTTPS直连GitHub也被拦截,联系公司IT部门获取内网HTTP代理地址,拿到后执行以下命令配置Git全局代理:
git config --global http.proxy http://代理地址:代理端口 git config --global https.proxy http://代理地址:代理端口
如果代理需要账号认证,代理地址格式改为http://代理账号:代理密码@代理地址:代理端口即可。
方案3:排查DNS解析异常
如果以上操作都无效,先执行nslookup github.com和nslookup ssh.github.com看返回的IP地址是否异常,若返回内网保留地址或者解析超时,可以手动将公共DNS(如114.114.114.114、223.5.5.5)加到本机网络配置中,或者直接查询两个域名的公网可达IP,写入本机hosts文件后重试。
内容的提问来源于stack exchange,提问作者Phillip
相关产品推荐
相关产品推荐

