Ошибка Git ssh: порт 22: нет маршрута к хосту

Ошибка Git ssh: порт 22: нет маршрута к хосту

Я пытался настроить git и использовать его для github, затем, когда я следовал справочной документации, но когда я добрался дошаг 5 раздела «Настройка ключей SSH»:Проверьте все, когда я использовал эту команду: Я получил ошибку: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

И я попробовал команду, предложенную Жилем:

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.

Вы можете получить лучшее представление о том, где перехватываются ваши пакеты, установивtcptracroute Установить tcptracerouteи бег tcptraceroute github.com 22.

Попросите администратора вашей школы открыть порт 22 или хотя бы (если они не хотят) порт 22 для github.com. Ваше использование сети является серьезным использованием, которое должно быть разрешено учащимся.

Если администраторы не сдвинутся с места, и вы используете прокси для подключения к Интернету, вы можете заставить прокси-сервер ретранслировать трафик (это может работать, а может и нет, в зависимости от того, как настроен прокси-сервер). СмотритеВозможно ли использовать SSH через порт 80?

Кстати, ваша 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-клиенткак показано здесь.

Связанный контент