Erro ssh do Git: porta 22: nenhuma rota para o host

Erro ssh do Git: porta 22: nenhuma rota para o host

Tentei usar o set up git e usá-lo para o github, então quando segui o documento de ajuda, mas quando chegueietapa 5 da seção de configuração de chaves SSH:Teste tudo, quando usei este comando: recebi um erro:ssh -T [email protected]

ssh: conecte-se ao host github.com porta 22: nenhuma rota para o host

Então usei este comando:

ssh -vT [email protected]

Aqui está o que consegui:

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

Pesquisei um pouco no Google e descobri que precisava verificar se o iptables bloqueou a porta. Então aqui está o resultado:

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

E tentei o comando sugerido por Gilles:

tcptraceroute github.com 22

Aqui está o que consegui:

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

Parece que a rota está parada em 115.156.255.174, que não sei onde fica.

Não consigo entender o que isso significa. Bloqueia a porta 22?

A propósito, posso acessar a Internet e visitar github.com. E estou usando o Ubuntu 11.10.

Alguém pode ajudar com isso? Obrigado!

Responder1

Sua INPUTcorrente aceita tudo. Você não mostrou sua OUTPUTcorrente, mas presumo que ela também aceita tudo. Isso implica que a conexão está bloqueada em algum lugar entre você e o Github. É possível que o firewall da sua escola bloqueie as conexões de saída para a porta 22.

Você pode ter uma ideia melhor de onde seus pacotes são interceptados instalandotcptraceroute Instale o tcptraceroutee correndo tcptraceroute github.com 22.

Peça ao administrador da sua escola para abrir a porta 22, ou pelo menos (se estiver relutante) a porta 22 para github.com. O seu uso da rede é um uso sério, que deveria ser permitido aos alunos.

Se os administradores não cederem e você usar um proxy para se conectar à Web, poderá conseguir que o proxy retransmita o tráfego (pode ou não funcionar, dependendo de como o proxy está configurado). VerÉ possível fazer SSH pela porta 80?

Aliás, sua INPUTrede permite todo o tráfego de entrada, já que você só tem ACCEPTregras e uma ACCEPTpolítica. Um conjunto de regras típico bloquearia o tráfego UDP de entrada em portas não controladas e bloquearia conexões TCP de entrada em portas não controladas:

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

Responder2

Com base no seu comentário, é quase certo que a escola possui algum tipo de filtro para bloquear todo o tráfego que não seja da porta 80 ou todo o tráfego que não esteja na lista de permissões. Você provavelmente poderia se safar com um túnel HTTP SSH conforme documentadoaqui, ou você pode tentar um cliente ssh baseado em navegadorcomo mostrado aqui.

informação relacionada