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

8

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

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

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.

Может кто-нибудь помочь с этим? Спасибо!

Gnijuohz
источник
Вы подключаетесь к интернету через прокси-сервер?
Jackweirdy
@jackweirdy Нет, я учусь в школе в сети. Возможно ли, что порт 22 заблокирован моей школой?
Gnijuohz

Ответы:

3

Ваша INPUTцепь принимает все. Вы не показали свою OUTPUTцепочку, но я предполагаю, что она тоже все принимает. Это означает, что соединение заблокировано где-то между вами и Github. Возможно, что межсетевой экран вашей школы блокирует исходящие соединения с портом 22.

Вы можете получить лучшее представление о том, где перехвачены ваши пакеты, установив tcptraceroute Установить 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
Жиль "ТАК - прекрати быть злым"
источник
Я снова выполнил эту команду и обнаружил, что, поскольку я обновил свой вопрос, в цепочке вывода ничего не было. Значит ли это, что я принимаю все?
Gnijuohz
@Gnijuohz Да, поскольку у вас есть только правила ПРИНЯТЬ, а ваша политика - ПРИНЯТЬ, ваш компьютер разрешает весь входящий и исходящий трафик. Вы также перенаправляете все, если нет ограничения на третье правило FORWARD (например, для определенного интерфейса - вам нужно добавить -vфлаг, iptablesчтобы увидеть все части правила).
Жиль "ТАК - перестань быть злым"
Спасибо, я использовал команду, которую ты дал, и получил ответ, казалось, что он заблокирован моей школой. Я отправлю это в своем вопросе прямо сейчас ~
Gnijuohz
Добавлено :) Означает ли это, что он заблокирован 115.156.255.174?
Gnijuohz
@Gnijuohz Да, похоже, что 115.156.255.174 (машина в сети hust.edu.cn) блокирует исходящие соединения с портом 22.
Жиль "ТАК - перестань быть злым"
2

Исходя из вашего комментария, почти наверняка в школе есть какой-то фильтр, который блокирует либо весь трафик, не относящийся к порту 80, либо весь трафик, не входящий в белый список. Возможно, вы могли бы избежать использования туннеля SSH HTTP, как описано здесь , или вы можете попробовать браузерный ssh-клиент, как показано здесь .

jackweirdy
источник