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


8

我尝试使用set git并将其用于github,然后当我遵循帮助文档时,但是当我进入设置ssh keys部分的第5步时:测试所有内容,当我使用此命令时:ssh -T git@github.com我遇到了错误:

ssh:连接到主机github.com端口22:无路由到主机

然后我使用了以下命令:

ssh -vT git@github.com

这是我得到的:

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吗?

顺便说一下,我可以访问Internet并访问github.com。我正在使用Ubuntu 11.10。

有人能帮忙吗?谢谢!


您是否通过代理服务器连接到Internet?
jackweirdy 2012年

@jackweirdy不,我是一名在学校使用网络的学生。22号端口是否可能被我的学校封锁?
Gnijuohz 2012年

Answers:


3

您的INPUT连锁店接受一切。您尚未展示您的OUTPUT连锁店,但我假设它也接受一切。这意味着您和Github之间的某处连接被阻塞。您学校的防火墙可能会阻止到端口22的传出连接。

通过安装tcptraceroute 安装tcptraceroute并运行,您可以更好地了解在何处截获数据包tcptraceroute github.com 22

请您学校的管理员打开端口22,或者至少(如果他们不愿意)打开22端口github.com。您对网络的使用是认真的,应允许学生使用。

如果管理员不反对,并且您使用代理连接到Web,则可以使该代理中继流量(它可能会或可能不会起作用,这取决于代理的配置方式)。请参阅是否可以通过端口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

我再次运行了该命令,发现在我对问题进行更新时,输出链中没有任何内容。这是否意味着我接受了一切?
Gnijuohz 2012年

@Gnijuohz是的,因为您只有ACCEPT规则,并且您的策略是ACCEPT,所以您的计算机允许所有传入和传出流量。您还可以转发所有内容,除非对第三条FORWARD规则有限制(例如,到特定接口-您需要添加-v标志iptables以查看规则的所有部分)。
吉尔(Gilles)'所以

谢谢,我使用了您给出的命令,得到了响应,似乎它被我的学校阻止了。我马上将其发布到我的问题中
Gnijuohz 2012年

添加:)这是否意味着它被115.156.255.174阻止了?
Gnijuohz 2012年

@Gnijuohz是,它看起来像115.156.255.174(在hust.edu.cn网络上的机器)被阻塞到端口22传出连接
吉尔“SO-光阑恶”

2

根据您的评论,几乎可以肯定该学校已采用某种过滤器来阻止所有非端口80的流量或所有非白名单的流量。您可能可以摆脱此处记录的SSH HTTP隧道,也可以尝试如下所示的基于浏览器的ssh客户端。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.