一、 具体报错
- 情况
在之前使用https的方式操作git时常会因为网络问题出现和github连接失败的问题后,在之前的博客git提交报错中转而使用ssh的方式,之后很长一段时间都没什么问题,后来某天在git pull
提交代码时,出现以下报错信息
- 报错信息:
ssh: connect to host github.com port 22: Operation timed out
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.`
- 报错原因
见名知意是由链接不到github.com的22号端口引起的
二、 解决思路
首先连接不到22端口,可能是由于自身配置问题,根据上述博客中的github配置ssh访问中提到的方式验证自己是否已经配置好了密钥
- 查看自己的电脑是否配置了密钥信息
cd ~/.ssh
ls
以下说明本机已生成了ssh key
P.S. :如果没有,请按照上述链接中提到的配置githubssh访问的方式进行配置
2. 查看github上是否已经添加了本机密钥
进入github -> settings -> ssh and gpg keys 查看是否已添加密钥信息
经过验证,上述配置都没有问题
-
解决方案
网络上现有解决方案主要有两种:- 使用https协议,不要使用ssh协议
由于吃过https协议的苦头,所以果断放弃第二种方式,(由于mac关了梯子之后使用https协议git操作经常玄学),等以后需要详细学习一下计算机的网络代理相关知识
这种解决方式的链接:坑:ssh: connect to host github.com port 22: Connection refused
-
使用GitHub的443端口
当然443端口也是https协议的默认端口,这种做法应该是由于https和ssh访问的端口虽然不同,但是内容是一致的
由于防火墙或者其他原因导致github.com的22端口访问异常,所以访问443端口
方案:
在~/.ssh文件夹下新建或者在config文件中添加以下信息:Host github.com User git Hostname ssh.github.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa Port 443
修改并保存之后,使用
ssh -T git@github.com
进行验证Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
出现以上信息证明配置成功
-
其他方案:
其他情况下,可能由于DNS域名解析服务出错,可以尝试重新配置计算机的DNS解析服务
详见:坑:ssh: connect to host github.com port 22: Connection refused最后的解决方案