一、问题

无法进行clone项目和其他Git操作。执行检测连接命令 ssh -T git@github,com报错 ssh:connect to host github.com port 22: Connection timed out 即:连接22端口超时

涉及到的文件: C:\Users\JIACHENGER.ssh\config C:\Users\JIACHENGER.ssh\github_id_rsa C:\Users\JIACHENGER.ssh\github_id_rsa.pub

C:\Users\JIACHENGER\.ssh\known_hosts生成SSH连接日志

host文件 C:\Windows\System32\drivers\etc\hosts IP和域名的本地映射文件,只要在本机中查到了指定的域名,就不会继续去DNS(域名系统)中继续查找。 Windows设置本地DNS域名解析hosts文件配置

配置SSH公私钥可参考我这篇:GitHub&Gitee&Gitlab&极狐(JihuLab)同时生成并配置和检测不同SSH公私钥详细过程

二、解决问题

2.1 ssh:connect to host github.com port 22: Connection timed out

//详细连接过程,-v表示verbose

ssh -vT git@github.com

或者

ssh -Tvvv git@github.com

//nslookup是域名解析工具,8.8.8.8是Google的DNS服务器地址

nslookup github.com 8.8.8.8

//使用本机已经设置好的DNS服务器进行域名解析

nslookup github.com

这里::1是IPV6的localhost地址,127.0.0.1是IPV4的localhost地址。这里基本可以认为是DNS域名解析出了问题,导致GitHub的域名被解析成了本地localhost的ip地址,导致无法连接上GitHub。

2.2 kex_exchange_identification: Connection closed by remote host

此时又出现了一个问题:

kex_exchange_identification: Connection closed by remote host

Connection closed by ::1 port 22

将C:\Users\JIACHENGER\.ssh\known_hosts备份,后将known_hosts的内容清空,再重新执行检测连接命令 ssh -T git@github,com,这样做偶尔可以连接成功,但过了一会儿还是会报同样的错误。 我同时配置SSH公私钥的除了GitHub以外的其他平台(Gitee&Gitlab&极狐(JihuLab))都可以重新正常连接(过程中需要输入yes确认,表示确认添加主机到可信任列表,本机在之前第一次生成SSH公私钥的时候,没有配置访问密码),并且在C:\Users\JIACHENGER\.ssh\known_hosts中生成连接日志,如下图: GitHub&Gitee&Gitlab&极狐(JihuLab)同时生成并配置和检测不同SSH公私钥详细过程

2.3 排除端口

C:\Users\JIACHENGER\.ssh\config 中,若config中没有指定端口,默认使用22端口,进行SSH连接。 使用443端口(默认情况)config配置如下: 注意:GitHub端口 443 的主机名Hostname为 ssh.github.com,而不是 github.com。

# github

# ssh -T git@github.com

Port 443

#Port 22

Host github.com

Hostname ssh.github.com

PreferredAuthentications publickey

IdentityFile ~/.ssh/github_id_rsa

使用22端口(默认情况,不配置也是使用22端口)config配置如下:

# github

# ssh -T git@github.com

#Port 443

Port 22

Host github.com

Hostname github.com

PreferredAuthentications publickey

IdentityFile ~/.ssh/github_id_rsa

仍然还会报同样的错误,说明大概率和端口没有关系:

2.4 在hosts中手动配置GitHub域名映射解决问题

在host文件C:\Windows\System32\drivers\etc\hosts中手动配置GitHub域名映射,在文件末尾处增加一行 140.82.113.4 github.com。此处的域名github.com和C:\Users\JIACHENGER\.ssh\config文件中GitHub配置的Hostname值一致,均为github.com。

# github

# ssh -T git@github.com

#Port 443

#注意:GitHub端口 443 的主机名Hostname为 ssh.github.com,而不是 github.com。

#Port 22 此处注释,默认也使用22端口

Host github.com

Hostname github.com

PreferredAuthentications publickey

IdentityFile ~/.ssh/github_id_rsa

IP和域名的本地映射文件,只要在本机中查到了指定的域名,就不会继续去DNS(域名系统)中继续查找。 参考:Windows设置本地DNS域名解析hosts文件配置

# Added by Docker Desktop

192.168.1.14 host.docker.internal

192.168.1.14 gateway.docker.internal

# To allow the same kube context to work on the host and the container:

127.0.0.1 kubernetes.docker.internal

# End of section

#2023-9-19 19:08:03 配置

#解决ssh:connect to host github.com port 22: Connection timed out等问题

#在hosts中手动配置GitHub域名映射

140.82.113.4 github.com

在C:\Windows\System32\drivers\etc\hosts中手动配置GitHub域名映射使用时,同时不需要在C:\Users\JIACHENGER\.ssh\config 文件中配置端口,默认使用22端口, 如下:

# github

# ssh -T git@github.com

#Port 443

#Port 22

Host github.com

HostName github.com

PreferredAuthentications publickey

IdentityFile ~/.ssh/github_id_rsa

如果配置了端口,就会报下面的错误:

在hosts中手动配置GitHub域名映射后检测GitHub连接(config中不配置端口,默认使用22端口),成功连接:

$ ssh -T git@github.com

Hi DJCKING! You've successfully authenticated, but GitHub does not provide shell access.

三、参考

测试 SSH 连接 在 HTTPS 端口使用 SSH GitHub&Gitee&Gitlab&极狐(JihuLab)同时生成并配置和检测不同SSH公私钥详细过程 Git问题:解决“ssh:connect to host github.com port 22: Connection timed out” 坑:ssh: connect to host github.com port 22: Connection refused Windows设置本地DNS域名解析hosts文件配置 ssh远程登录报错:kex_exchange_identification: Connection closed by remote host

好文链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: