
Я пытался настроить 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 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-клиенткак показано здесь.