ssh: connect to host github.com port 22: Connection refused

ssh: connect to host github.com port 22: Connection refused

问题现象

本文以Windows系统为例进行说明,在个人电脑上使用Git命令来操作GitHub上的项目,本来都很正常,突然某一天开始,会提示如下错误ssh: connect to host github.com port 22: Connection refused。

$ git pull ssh: connect to host github.com port 22: Connection refused
fatal: Could not read from remote repository. ​ Please make sure you
have the correct access rights and the repository exists.

排查思路

ssh: connect to host github.com port 22: Connection refused这个错误提示的是连接github.com的22端口被拒绝了。

原本以为http://github.com挂了,但是浏览器访问http://github.com一切正常。

网上搜索这个报错,发现很多人遇到这个问题,大概有2个原因和对应解决方案:

1、使用GitHub的443端口

22端口可能被防火墙屏蔽了,可以尝试连接GitHub的443端口。
打开git bash
在这里插入图片描述

$ vim ~/.ssh/config

# Add section below to it
Host github.comHostname ssh.github.comPort 443

$ ssh -T git@github.com
Hi xxxxx! You’ve successfully authenticated, but GitHub does not
provide shell access.
这个解决方案的思路是:给~/.ssh/config文件里添加如下内容,这样ssh连接GitHub的时候就会使用443端口。

Host github.com
Hostname ssh.github.com
Port 443
如果~/.ssh目录下没有config文件,新建一个即可。

修改完~/.ssh/config文件后,使用ssh -T git@github.com来测试和GitHub的网络通信是否正常,如果提示Hi xxxxx! You’ve successfully authenticated, but GitHub does not provide shell access. 就表示一切正常了。

但是,这个方案在我这里行不通,修改后还是提示ssh: connect to host github.com port 443: Connection refused。

这个方案有效的前提是:执行命令ssh -T -p 443 git@ssh.github.com后不再提示connection refused,所以要尝试这个方案的小伙伴先执行这条命令测试下。

2、使用https协议,不要使用ssh协议

在你的GitHub的本地repo目录,执行如下命令:

$ git config --local -e

然后把里面的url配置项从git格式

url = git@github.com:username/repo.git

修改为https格式

url = https://github.com/username/repo.git

这个其实修改的是repo根目录下的./git/config文件。

但是这个方法在我这里同样不生效。

解决方案
网上的招都没用,只能自力更生了。既然和GitHub建立ssh连接的时候提示connection refused,那我们就详细看看建立ssh连接的过程中发生了什么,可以使用ssh -v命令,-v表示verbose,会打出详细日志。

$ ssh -vT git@github.com OpenSSH_9.0p1, OpenSSL 1.1.1o 3 May 2022
debug1: Reading configuration data /etc/ssh/ssh_config debug1:
Connecting to github.com [::1] port 22. debug1: connect to address ::1
port 22: Connection refused debug1: Connecting to github.com
[127.0.0.1] port 22. debug1: connect to address 127.0.0.1 port 22:
Connection refused ssh: connect to host github.com port 22: Connection
refused

从上面的信息马上就发现了诡异的地方,连接http://github.com的地址居然是::1和127.0.0.1。前者是IPV6的localhost地址,后者是IPV4的localhost地址。

到这里问题就很明确了,是DNS解析出问题了,导致http://github.com域名被解析成了localhost的ip地址,就自然连不上GitHub了。

Windows下执行ipconfig /flushdns 清楚DNS缓存后也没用,最后修改hosts文件,增加一条github.com的域名映射搞定。

140.82.113.4 github.com

查找http://github.com的ip地址可以使用https://www.ipaddress.com/来查询,也可以使用nslookup命令

nslookup github.com 8.8.8.8

nslookup是域名解析工具,8.8.8.8是Google的DNS服务器地址。直接使用

nslookup github.com

就会使用本机已经设置好的DNS服务器进行域名解析,ipconfig /all可以查看本机DNS服务器地址。

这个问题其实就是DNS解析被污染了,有2种可能:

  • DNS解析被运营商劫持了
  • 使用了科学上网工具
    按照我上面写的解决方案操作即可解决。

References

  • https://chaxuri.com/archives/43.html
  • https://stackoverflow.com/questions/15589682/ssh-connect-to-host-github-com-port-22-connection-timed-out
  • https://docs.github.com/en/authentication/troubleshooting-ssh/error-permission-denied-publickey
  • https://gist.github.com/Tamal/1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/417721.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Android]实现一个权限申请类

[Android]实现一个权限申请类 导言 在引入了动态权限申请之后,Android的权限申请就变得尤为繁琐,若是按照原有的方法一板一眼地进行申请,样板代码未免太多。因此本篇文章就使用ActivityResult API,来实现一个简单的权限申请类来帮…

解决 conda新建虚拟环境只有一个conda-meta文件&conda新建虚拟环境不干净

像以前一样通过conda 新建虚拟环境时发现环境一团糟,首先新建虚拟环境 conda create -n newenv这时候activate newenv,通过pip list,会发现有很多很多的包,都是我在其他环境用到的。但诡异的是,来到anaconda下env的目…

福昕软件的使用

快捷操作 快捷键 快捷键功能备注Ctrl P打印 Ctrl W关闭 Ctrl B书签 鼠标放菜单栏,单击右键即可导入/导出 自定义菜单栏文件-->偏好设置-->文档 1、多实例:单击PDF后均重新打开一个新界面。

【51单片机Keil+Proteus8.9+ADC0804】ADC实验 模拟转数字实验

一、实验名称 ADC实验 模拟转数字实验 二、设计思路 电路设计 1.选用AT89C51单片机作为电路核心单元,外接8位单通道AD转换器ADC0804芯片和LM016L显示器以及滑动变阻器等其它常用元器件构成电路。 2.将ADC0804芯片的控制引脚RD,WR,INTR接到AT89C51芯片对应引脚&…

SpringCloud-高级篇(十四)

缓存的作用是其实就是为了减轻对数据库的压力,缩短服务响应的时间,从而提高整个服务的并发能力,Redis单节点并发其实已经很高了,但是它依然有自己的上限,随着互联网的发展,用户低量越来越大,想淘…

51单片机原理及应用张毅刚版课后习题以及答案

AT89S51单片机内部集成了哪些外围功能部件 ①8位微处理器CPU ②数据存储器 128B RAM ③程序存储器 ④4个8位可编程并行I/O口 ⑤1个全双工的异步串行口 ⑥2个可编程的16位定时器/计数器 ⑦1个看门狗定时器WDT ⑧中断系统具有五个中断源 五个中断向量 ⑨特殊功能寄存器SFR 26个…

vulnhub靶机BlueSky

下载地址:BlueSky: 1 ~ VulnHub 主机发现 目标177 端口扫描 服务扫描 漏洞扫描 看web就不用我多说了吧 默认页面,爆破吧 这个也没有扫出来 有manger/html但是没有任何返回值 应该是限制本地访问或者禁掉了 网上直接用struts2-showcase这个洞了 cve-20…

智能AI写作到底怎么样?这几款AI写作非常好用

近年来,人工智能(AI)技术的快速发展已经渗透到各个领域,包括写作领域。AI写作软件通过模仿指定作家的风格和语言,能够生成高质量的文章。这种技术的出现引发了广泛的讨论和争议。本文将探讨AI写作的优点,并…

flutter获取地理定位:geolocator依赖详细用法

本文使用geolocator插件实现app物理定位功能。 该插件的主要功能有: 获取最后已知位置;获取设备当前位置;获取连续的位置更新;检查设备是否启用了定位服务;计算两个地理坐标之间的距离(米)&am…

air001研究笔记.基于arduino快速开发简单项目

一、air001芯片简介 air001是厂商合宙推出的一款tssop封装的mcu芯片。支持swd与串口烧录,多面向简单的功能简单类别的电子产品,因为官方文档齐全上手简易,所以也特别适合非专业爱好者乃至于幼儿编程。芯片内置资源:AIR001芯片数据…

家教上门助教小程序源码,家教小程序,家教系统,家教app,家教源码

家教上门助教小程序源码,家教小程序,家教系统,家教app,家教源码 推荐使用宝塔面板Linux NginxPHPMYSQL 支持家教老师筛选 支持家教人员入住 支持购买课程 支持教学资讯 支持订单课程

项目管理十大知识领域之项目沟通管理

一、项目沟通管理概述 项目沟通管理是项目管理中的重要组成部分,它涉及到对项目信息的收集、处理、存档和传递。一个成功的项目沟通管理可以确保团队成员、利益相关者以及其他相关方之间的信息交流畅通无阻,从而推动项目顺利进行。沟通管理涉及的内容不…