连接到 Github 时 SSH 挂起

连接到 Github 时 SSH 挂起

这种情况最近才开始发生。我无法使用 ssh 连接到 github。我可以连接到本地网络上的其他计算机,并且可以使用另一台计算机使用我的桌面失败的相同以太网连接来连接到 github。如何阻止连接超时并成功连接到 github?

为了清楚起见进行编辑:我使用 github 作为我的 ssh 目标,因为我不知道 ssh 可以访问任何其他公共服务。我不想被拒绝,所以 github 是我唯一的选择。问题的根源是我无法在任何地方通过任何端口访问任何 ssh 服务。ssh -Tvvv无论 IP 地址如何(不包括本地主机),我都会得到相同的输出。

诊断:

$ ssh -Tvvv github.com
OpenSSH_8.8p1, OpenSSL 1.1.1l  24 Aug 2021
debug1: Reading configuration data /home/dan/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts' -> '/home/dan/.ssh/known_hosts'
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts2' -> '/home/dan/.ssh/known_hosts2'
debug2: resolving "github.com" port 22
debug3: resolve_host: lookup github.com:22
debug3: ssh_connect_direct: entering
debug1: Connecting to github.com [140.82.112.4] port 22.
debug3: set_sock_tos: set socket 3 IP_TOS 0x48
debug1: connect to address 140.82.112.4 port 22: Connection timed out
ssh: connect to host github.com port 22: Connection timed out
$ nmap -p 22 github.com
Starting Nmap 7.92 ( https://nmap.org ) at 2021-12-26 21:54 EST
Nmap scan report for github.com (140.82.112.4)
Host is up (0.015s latency).
rDNS record for 140.82.112.4: lb-140-82-112-4-iad.github.com

PORT   STATE    SERVICE
22/tcp filtered ssh

Nmap done: 1 IP address (1 host up) scanned in 0.26 seconds
$ screenfetch -n
 dan@dan-ms7d09
 OS: Manjaro 21.2.0 Qonos
 Kernel: x86_64 Linux 5.10.84-1-MANJARO
 Uptime: 17h 58m
 Packages: 1499
 Shell: zsh 5.8
 Resolution: 5760x1080
 DE: GNOME
 WM: i3
 GTK Theme: Adwaita [GTK2/3]
 Icon Theme: Adwaita
 Font: Cantarell 11
 Disk: 479G / 955G (53%)
 CPU: Intel Core i9-10850K @ 20x 5.2GHz [35.0°C]
 GPU: NVIDIA GeForce RTX 2060
 RAM: 9225MiB / 32002MiB

答案1

有几个步骤可以解决该问题。首先,您必须确保名称解析正确完成。对我来说,这140.82.112.4似乎没问题,并且是 GitHub 的 IP 地址之一,因此名称解析是正确的。

但 Github 上 22 端口的状态filtered是问题所在。根据 nmap 的端口扫描基础知识

Nmap 无法确定端口是否打开,因为数据包过滤阻止其探测到达该端口。过滤可以来自专用防火墙设备、路由器规则或基于主机的防火墙软件。这些端口让攻击者感到沮丧,因为它们提供的信息很少。有时,它们会使用 ICMP 错误消息进行响应,例如类型 3 代码 13(目标无法到达:管理上禁止通信),但简单地丢弃探测而不响应的过滤器更为常见。这迫使 Nmap 重试几次,以防探测由于网络拥塞而不是过滤而被丢弃。这会大大减慢扫描速度。

所以,有几个地方可以检查问题:

首先,您应该确保您的计算机上没有防火墙规则阻止连接到此 IP 地址和端口号。

其次,检查您的本地网络上是否存在可能阻止您连接到该地址的防火墙设备。

第三种可能是您的IP地址由于过度尝试或其他类似原因而被Github服务器禁止。如果您使用代理或某种 VPN 连接到互联网,则可能会发生这种情况。 VPN 和代理工具的共享 IP 地址通常会产生此类问题。我的建议是以某种方式更改您的连接或 IP 地址。如果您使用 ADSL 连接,重新启动 ADSL 调制解调器可能会给您一个新的 IP 地址。如果您不使用 VPN 或任何类型的代理,请尝试使用一个,看看是否有任何区别。

希望它对您有所帮助并祝您好运。

答案2

我在这个问题上挣扎了一段时间,然后偶然发现了 GitHub 支持下的帮助页面:

https://docs.github.com/en/authentication/troubleshooting-ssh/using-ssh-over-the-https-port

事实证明,我的工作场所拥有防火墙/端口保护的正确神奇组合,“几乎”允许常规 Git SSH 访问 GitHub,即它“偶尔”工作但不可靠。 ;-b

通过我的文件中的这个咒语$HOME/.ssh/config,要使用 SSH Over HTTPS,我突然能够通过 GitHub 中的 SSH 密钥从命令行访问我的 GitHub 存储库:

Host github.com
User git
Hostname ssh.github.com
Port 443
PreferredAuthentications publickey
IdentityFile /home/XXX/.ssh/github_id_rsa
TCPKeepAlive yes     # not sure if truly needed
IdentitiesOnly yes   # not sure if truly needed

答案3

FWIW 我在 MacOS Monterey 12.7.2 上遇到了这个问题。

我重新生成了 ssh 密钥(不确定这是否是关键位)并更改 ~/.ssh/config

Host github.com
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_ed25519
  UseKeychain no

相关内容