Błąd ssh Git: port 22: brak trasy do hosta


8

Próbowałem użyć skonfigurowanego git i użyć go do github, a następnie, gdy podążyłem za dokumentem pomocy, ale kiedy dotarłem do kroku 5 sekcji konfiguracji kluczy ssh : przetestuj wszystko, kiedy użyłem tego polecenia: ssh -T git@github.comdostałem błąd :

ssh: połącz z hostem github.com port 22: Brak trasy do hosta

Następnie użyłem tego polecenia:

ssh -vT git@github.com

Oto co mam:

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

Przeglądałem przez chwilę i stwierdziłem, że muszę sprawdzić, czy iptables zablokował port. Oto wynik:

~$ 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

I spróbowałem polecenia sugerowanego przez Gillesa:

tcptraceroute github.com 22

Oto co mam:

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

Wygląda na to, że trasa jest zatrzymana o godzinie 115.156.255.174, co nie wiem gdzie ona jest.

Nie mogę zrozumieć, co to znaczy. Czy blokuje port 22?

Nawiasem mówiąc, mogę uzyskać dostęp do Internetu i odwiedzić github.com. Używam Ubuntu 11.10.

Czy ktoś może w tym pomóc? Dzięki!


Czy łączysz się z Internetem za pośrednictwem serwera proxy?
jackweirdy

@jackweirdy Nie, jestem studentem korzystającym z sieci w mojej szkole. Czy to możliwe, że port 22 jest zablokowany przez moją szkołę?
Gnijuohz

Odpowiedzi:


3

Twój INPUTłańcuch akceptuje wszystko. Nie pokazałeś swojego OUTPUTłańcucha, ale założę, że on także akceptuje wszystko. Oznacza to, że połączenie jest gdzieś pomiędzy Tobą a Githubem. Możliwe, że zapora ogniowa Twojej szkoły blokuje połączenia wychodzące z portem 22.

Możesz dowiedzieć się, gdzie twoje pakiety są przechwytywane, instalując tcptraceroute Zainstaluj tcptraceroute i uruchamiając tcptraceroute github.com 22.

Poproś administratora szkoły, aby otworzył port 22 lub przynajmniej (jeśli niechętnie) port 22 do github.com. Twoje korzystanie z sieci jest poważnym wykorzystaniem, które powinno być dozwolone dla studentów.

Jeśli administratorzy nie ruszają się i używasz proxy do łączenia się z Internetem, możesz być w stanie uzyskać proxy do przekazywania ruchu (może, ale nie musi działać, w zależności od konfiguracji proxy). Zobacz Czy jest możliwe połączenie SSH przez port 80?

Nawiasem mówiąc, Twój INPUTłańcuch zezwala na cały ruch przychodzący, ponieważ masz tylko ACCEPTreguły i ACCEPTzasady. Typowy zestaw reguł blokuje przychodzący ruch UDP na nie sprawdzonych portach i blokuje przychodzące połączenia TCP na nie sprawdzonych portach:

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

Ponownie uruchomiłem to polecenie i stwierdziłem, że jak zaktualizowałem moje pytanie, w łańcuchu wyjściowym nic nie było. Czy to oznacza, że ​​akceptuję wszystko?
Gnijuohz

@Gnijuohz Tak, ponieważ masz tylko reguły AKCEPTUJ, a twoją zasadą jest AKCEPTUJ, twoje urządzenie zezwala na cały ruch przychodzący i wychodzący. Przekazujesz również wszystko, chyba że istnieje ograniczenie trzeciej reguły FORWARD (np. Do konkretnego interfejsu - musisz dodać -vflagę, iptablesaby zobaczyć wszystkie części reguły).
Gilles „SO- przestań być zły”

Dzięki, użyłem polecenia, które wydałeś i dostałem odpowiedź, wydawało się, że jest zablokowana przez moją szkołę.
Zamieszczę go

Dodano :) Czy to oznacza, że ​​jest zablokowany przez 115.156.255.174?
Gnijuohz

@Gnijuohz Tak, wygląda na to, że 115.156.255.174 (maszyna w sieci hust.edu.cn) blokuje wychodzące połączenia z portem 22.
Gilles „SO- przestań być zły”

2

Na podstawie Twojego komentarza jest prawie pewne, że szkoła ma jakiś filtr, który blokuje cały ruch poza portem 80 lub cały ruch na białej liście. Prawdopodobnie możesz uciec z tunelu HTTP SSH, jak tutaj udokumentowano , lub możesz wypróbować klienta ssh opartego na przeglądarce, jak pokazano tutaj .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.