Git ssh 错误:端口 22:没有到主机的路由

Git ssh 错误:端口 22:没有到主机的路由

我尝试使用设置 git 并将其用于 github,然后当我按照帮助文档操作时,但是当我到达设置 ssh 密钥部分的第 5 步:测试所有内容,当我使用此命令时:我收到一个错误:ssh -T [email protected]

ssh:连接到主机 github.com 端口 22:没有到主机的路由

然后我使用了这个命令:

ssh -vT [email protected]

以下是我得到的结果:

OpenSSH_5.8p1 Debian-7ubuntu1, OpenSSL 1.0.0e 6 Sep 2011
debug1: Reading configuration data /home/jacos/.ssh/config
debug1: Applying options for github.com
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to github.com [207.97.227.239] port 22.
debug1: connect to address 207.97.227.239 port 22: No route to host
ssh: connect to host github.com port 22: No route to host

我搜索了一会儿,发现我必须检查 iptables 是否阻止了该端口。结果如下:

~$ sudo /sbin/iptables -L -n
[sudo] password for jacos: 
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:67 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:67 
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:53 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:53 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            10.42.43.0/24       state RELATED,ESTABLISHED 
ACCEPT     all  --  10.42.43.0/24        0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable 
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable 
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

我尝试了 Gilles 建议的命令:

tcptraceroute github.com 22

以下是我得到的结果:

Selected device eth0, address 222.20.58.XX(sorry...I masked part of my ip), port 33281 for outgoing packets
Tracing the path to github.com (207.97.227.239) on TCP port 22 (ssh), 30 hops max
 1  222.20.58.254  0.891 ms  0.850 ms  0.693 ms
 2  zxq-xs-h3c7510e.hust.edu.cn (115.156.255.137)  1.253 ms  1.569 ms  2.837 ms
 3  zxq-xs-rjs8606.hust.edu.cn (115.156.255.130)  0.729 ms  0.678 ms  0.629 ms
 4  115.156.255.174  0.794 ms  6.279 ms  16.569 ms
 5  * * *
 6  * * *
 7  * * *
 8  * * *
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *
Destination not reached

看来路线停在115.156.255.174,我不知道它在哪里。

我不明白这是什么意思。它会阻止端口 22 吗?

顺便说一下,我可以上网,也可以访问github.com。我使用的是Ubuntu 11.10。

有人能帮忙吗?谢谢!

答案1

您的INPUT链接受一切。您没有展示您的OUTPUT链,但我假设它也接受一切。这意味着您和 Github 之间的连接被阻止了。您学校的防火墙可能阻止了到端口 22 的传出连接。

你可以通过安装来更好地了解你的数据包在哪里被拦截tcptraceroute 安装 tcptraceroute并跑步tcptraceroute github.com 22

要求学校管理员开放端口 22,或者至少(如果他们不愿意)将端口 22 开放给github.com。您对网络的使用是一种严肃的使用,应该允许学生这样做。

如果管理员不让步,并且您使用代理连接到网络,您可能能够让代理中继流量(这可能会或可能不会起作用,具体取决于代理的配置方式)。请参阅是否可以通过端口 80 进行 SSH?

顺便说一句,您的INPUT链允许所有传入流量,因为您只有ACCEPT规则和ACCEPT策略。典型的规则集将阻止非审查端口上的传入 UDP 流量并阻止非审查端口上的传入 TCP 连接:

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 123 -j ACCEPT
iptables -P INPUT DROP

答案2

根据您的评论,几乎可以肯定学校已经安装了某种过滤器来阻止所有非端口 80 流量或所有非白名单流量。您可能可以使用 SSH HTTP 隧道,如文档所述这里或者你可以尝试基于浏览器的 ssh 客户端如图所示

相关内容