Error de git ssh: puerto 22: no hay ruta al host

8

Intenté configurar git y usarlo para github, luego, cuando seguí el documento de ayuda, pero cuando llegué al paso 5 de la sección configurar claves ssh : probar todo, cuando usé este comando: ssh -T [email protected]recibí un error :

ssh: conectarse al host github.com puerto 22: no hay ruta al host

Entonces usé este comando:

ssh -vT [email protected]

Esto es lo que obtuve:

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

Busqué en Google por un tiempo y descubrí que tenía que verificar si las iptables bloqueaban el puerto. Así que aquí está el 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

Y probé el comando sugerido por Gilles:

tcptraceroute github.com 22

Esto es lo que obtuve:

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 la ruta se detiene en 115.156.255.174, que no sé dónde está.

No puedo entender lo que significa. ¿Bloquea el puerto 22?

Por cierto, puedo acceder a Internet y visitar github.com. Y estoy usando Ubuntu 11.10.

¿Alguien puede ayudarme con esto? ¡Gracias!

Gnijuohz
fuente
¿Te conectas a internet a través de un servidor proxy?
jackweirdy
@jackweirdy No, soy un estudiante que usa la red en mi escuela. ¿Es posible que mi escuela bloquee el puerto 22?
Gnijuohz

Respuestas:

3

Tu INPUTcadena acepta todo. No has mostrado tu OUTPUTcadena, pero supongo que también acepta todo. Esto implica que la conexión está bloqueada en algún lugar entre usted y Github. Es posible que el firewall de su escuela bloquee las conexiones salientes al puerto 22.

Puede obtener una mejor idea de dónde se interceptan sus paquetes instalando tcptraceroute Instalar tcptraceroute y ejecutándose tcptraceroute github.com 22.

Pídale al administrador de su escuela que abra el puerto 22, o al menos (si son reacios) al puerto 22 github.com. Su uso de la red es un uso serio, que debe permitirse a los estudiantes.

Si los administradores no se mueven, y usted usa un proxy para conectarse a la web, es posible que pueda obtener el proxy para retransmitir el tráfico (puede o no funcionar, dependiendo de cómo esté configurado el proxy). Ver ¿Es posible SSH a través del puerto 80?

Por cierto, su INPUTcadena permite todo el tráfico entrante, ya que solo tiene ACCEPTreglas y una ACCEPTpolítica. Un conjunto de reglas típico bloquearía el tráfico UDP entrante en puertos no examinados y bloquearía las conexiones TCP entrantes en puertos no examinados:

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- deja de ser malvado'
fuente
Ejecuté ese comando nuevamente y descubrí que, como he actualizado en mi pregunta, no había nada en la cadena de salida. ¿Eso significa que acepto todo?
Gnijuohz
@Gnijuohz Sí, ya que solo tiene reglas ACEPTAR y su política es ACEPTAR, su máquina permite todo el tráfico entrante y saliente. También reenvía todo, a menos que haya una restricción en la tercera regla FORWARD (por ejemplo, a una interfaz en particular; debe agregar el -vindicador iptablespara ver todas las partes de una regla).
Gilles 'SO- deja de ser malvado'
Gracias, utilicé el comando que me diste y recibí la respuesta, parecía que estaba bloqueado por mi escuela. Lo publicaré en mi pregunta de inmediato ~
Gnijuohz
Agregado :) ¿Eso significa que está bloqueado por 115.156.255.174?
Gnijuohz
@Gnijuohz Sí, parece que 115.156.255.174 (una máquina en la red hust.edu.cn) está bloqueando las conexiones salientes al puerto 22.
Gilles 'SO- deja de ser malvado'
2

Según su comentario, es casi seguro que la escuela tenga algún tipo de filtro para bloquear todo el tráfico que no sea el puerto 80 o todo el tráfico que no esté en la lista blanca. Probablemente podría salirse con la suya con un túnel HTTP SSH como se documenta aquí , o podría probar un cliente ssh basado en navegador como se muestra aquí .

Jackweirdy
fuente