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

8

Tentei usar o git de configuração e usá-lo para o github, quando segui o documento de ajuda, mas quando cheguei à etapa 5 da seção de configuração de chaves ssh : Teste tudo, quando usei este comando: ssh -T [email protected]ocorreu um erro :

ssh: conectar ao host porta 22 do github.com: nenhuma rota para hospedar

Então eu usei este comando:

ssh -vT [email protected]

Aqui está o que eu tenho:

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 por um tempo e descobri que tinha que verificar se o iptables bloqueava 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 tenho:

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 é.

Não consigo descobrir o que isso significa. Ele bloqueia a porta 22?

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

Alguém pode ajudar com isso? Obrigado!

Gnijuohz
fonte
Você se conecta à Internet através de um servidor proxy?
22412 jackweirdy
@jackweirdy Não, eu sou um aluno que usa a rede da minha escola. É possível que a porta 22 esteja bloqueada pela minha escola?
Gnijuohz

Respostas:

3

Sua INPUTcorrente aceita tudo. Você não mostrou sua OUTPUTcadeia, mas presumo que ela aceite 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 o tcptraceroute Instale o tcptraceroute e executando tcptraceroute github.com 22.

Peça ao administrador da sua escola para abrir a porta 22 ou pelo menos (se houver relutância) 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 moverem e você usar um proxy para conectar-se à Web, poderá conseguir que o proxy retransmita o tráfego (ele pode ou não funcionar, dependendo de como o proxy estiver configurado). Consulte É possível fazer o SSH pela porta 80?

A propósito, sua INPUTcadeia permite todo o tráfego de entrada, pois você só possui ACCEPTregras e uma ACCEPTpolítica. Um conjunto de regras típico bloqueia o tráfego UDP de entrada em portas não controladas e bloqueia as 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
Gilles 'SO- parar de ser mau'
fonte
Executei esse comando novamente e descobri que, como atualizei minha pergunta, não havia nada na cadeia de saída. Isso significa que eu aceito tudo?
Gnijuohz 14/05
@Gnijuohz Sim, como você só tem regras ACEITAR e sua política é ACEITAR, sua máquina permite todo o tráfego de entrada e saída. Você também encaminha tudo, a menos que haja uma restrição na terceira regra FORWARD (por exemplo, para uma interface específica - você precisa adicionar o -vsinalizador iptablespara ver todas as partes de uma regra).
Gilles 'SO- stop be evil'
Obrigado, usei o comando que você deu e recebi a resposta, parece que está bloqueada pela minha escola. Vou postá-lo na minha pergunta imediatamente ~
Gnijuohz 15/05
Adicionado :) Isso significa que está bloqueado por 115.156.255.174?
Gnijuohz 15/05
@Gnijuohz Sim, parece que 115.156.255.174 (uma máquina na rede hust.edu.cn) está bloqueando as conexões de saída para a porta 22.
Gilles 'para de ser mau'
2

Com base no seu comentário, é quase certo que a escola tenha 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 estiver na lista de permissões. Provavelmente, você pode se safar de um túnel HTTP SSH, conforme documentado aqui , ou pode tentar um cliente ssh baseado em navegador, como mostrado aqui .

jackweirdy
fonte