Erro do git ssh: porta 22: sem rota para o host

8

Eu tentei usar set-up git e usá-lo para o github, então quando eu segui o doc de ajuda, mas quando cheguei a etapa 5 da seção de configuração das chaves ssh : Teste tudo, quando eu usei este comando: ssh -T [email protected] Eu recebi um erro:

  

ssh: conectar-se ao host github.com port 22: Nenhuma rota para hospedar

Então eu usei este comando:

ssh -vT [email protected]

Aqui está o que eu recebi:

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

Eu pesquisei por um tempo e descobri que tenho que 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 eu tentei o comando sugerido por Gilles:

tcptraceroute github.com 22

Aqui está o que eu recebi:

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 eu não sei onde está.

Eu não consigo descobrir 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!

    
por Gnijuohz 13.05.2012 / 16:18

2 respostas

3

Sua INPUT chain aceita tudo. Você não mostrou sua OUTPUT chain, mas vou assumir que ela aceita tudo também. 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 idéia melhor de onde seus pacotes são interceptados instalando tcptraceroute e executando 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 . Seu uso da rede é um uso sério, que deve ser permitido aos alunos.

Se os administradores não se mexerem 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). Veja É possível o SSH através da porta 80?

A propósito, sua INPUT cadeia permite todo o tráfego de entrada, pois você tem apenas ACCEPT regras e uma ACCEPT política. Um conjunto de regras típico bloquearia o tráfego UDP de entrada em portas não verificadas e bloquearia conexões TCP de entrada em portas não verificadas:

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
    
por Gilles 13.05.2012 / 17:59
2

Com base no seu comentário, é quase certo que a escola tem algum tipo de filtro para bloquear todo o tráfego sem porta 80 ou todo o tráfego que não esteja na lista de permissões. Você provavelmente poderia usar um túnel HTTP SSH como documentado aqui , ou você poderia tentar um navegador baseado cliente ssh como mostrado aqui .

    
por jackweirdy 13.05.2012 / 18:50

Tags