贫瘠之地

华北无浪漫,死海扬起帆
多少个夜晚,独自望着天

0%

DNS 解析导致的 ssh connect to host github.com port 22 Connection refused

背景

一段时间没有使用 github SSH 操作,今天突然发现 Hexo deploy 无法正常 push 到仓库

报错信息为

1
2
3
4
5
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 配置存在问题,但是检查了配置以及仓库情况并没有发现问题

此外尝试了直接使用 git 进行 pull 和 push 的操作,也无法成功

DNS 解析

查看了一些文章,此类 access 问题大致有以下原因:

  • SSH 配置错误
  • 22 端口被禁止
  • DNS 解析

排除了一些可能之后尝试是 DNS 存在问题

尝试修改 IPv4 DNS 配置后依然无法访问

第一步

使用 ssh git@github.com 验证是否可以通过 SSH 连接 github

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

确实无法正常连接

第二步

使用 ssh -v 命令,-v 表示 verbose,会打出建立 SSH 连接过程的详细日志

ssh -v git@github.com

1
2
3
4
OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
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

针对 github.com 的访问会请求到 127.0.0.1,访问本机 IP 明显是不正确的

检查了 hosts 配置也没发现存在针对 github 域名的相关错误配置

第三步

使用 nslookup 命令获取 github 的 IP 地址;使用 Google 的 DNS 8.8.8.8

nslookup github.com 8.8.8.8

1
2
3
4
5
6
Server:  dns.google
Address: 8.8.8.8

Non-authoritative answer:
Name: github.com
Address: 20.205.243.166

拿到 IP 地址 20.205.243.166

第四步

配置 hosts;hosts 路径一般为 C:\Windows\System32\drivers\etc\hosts

1
2
# github
20.205.243.166 github.com

随后继续进行 ssh -T git@github.com 验证则 access 成功,IP 也成功访问了配置的 20.205.243.166

1
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
1
2
debug1: Authentication succeeded (publickey).
Authenticated to github.com ([20.205.243.166]:22).

参考

坑:ssh: connect to host github.com port 22: Connection refused - 知乎 (zhihu.com)

解决ssh: connect to host github.com port 22: Connection refused_Seven17000的博客-CSDN博客