2012-08-05 16 views
29

Estoy usando SSH para acceder al sistema afs de mi universidad. Me gusta usar rmate (Remote TextMate), que requiere túnel SSH, así que incluí este alias en mi .bashrc.Advertencia: el reenvío de puertos remoto falló para escuchar el puerto 52698

alias sshr=ssh -R 52698:localhost:52698 [email protected] 

Siempre ha funcionado hasta ahora.

+0

Sólo un consejo. En cualquier problema ssh use el modificador '-vvv' para depurar. Si es posible, intente ejecutar el comando en el servidor remoto utilizando localhost como destino para validar la configuración. 'ssh [email protected] - ssh -vvv -R 1234: localhost: 1234 localhost'. Saludos, – geckos

Respuesta

18

Tenía otra conexión SSH abierta. Solo necesitaba cerrar esa conexión antes de abrir mi túnel SSH.

una explicación más detallada: Una vez que se ha establecido conexión ssh, las conexiones posteriores producirán un mensaje:

Advertencia: el reenvío de puerto remoto falló para el puerto de escucha 52698

Este mensaje es inofensivo, ya que el reenvío solo se puede configurar una vez y un reenvío funcionará para todas las conexiones ssh a la misma máquina. La sesión ssh original que abrió el reenvío permanecerá abierta cuando salga del intérprete de comandos hasta que todas las sesiones de edición remotas hayan finalizado.

+1

¿Dónde encontraste tu información para resolver este problema? He encendido recientemente el servidor y SSHed con tunelización inversa, intenté ejecutar rmate, y devuelve el error connect_to localhost port 52698: failed. Por lo que sé, solo tengo una conexión SSH abierta. He actualizado iptables para permitir conexiones en este puerto. Atascado en qué probar a continuación. – Ila

+2

Consejo novato que encontré útil: recuerde tener Textmate ejecutándose en su máquina local. Eso en realidad inicia el servidor. – Magne

+4

Si aún recibe esa advertencia, puede cerrar la sesión y conectarse a otro puerto haciendo lo siguiente: ssh -R : localhost: 52698 @. – kwyoung11

35

Tuve el mismo problema. Con el fin de buscar el puerto que ya está abierto, lo que tiene que emitir este comando en el 'corn.myschool.edu' equipo:

sudo netstat -plant | grep 52698 

Y luego matar a todos los procesos que se presentan con este (reemplace xxxx con los ID de proceso)

sudo kill -9 xxxx 

(ACTUALIZACIÓN: se ha cambiado la opción de ser -plant ya que es un buen mnemotécnica)

+8

En Mac, el comando parece ser "lsof -i -P | grep 52698", pero todavía no siempre resuelve el problema (solo listas de Textmate para mí) – Kevin

+3

Supongo que sería más fácil de recordar si reorganizó los argumentos a netstat: 'sudo netstat -plant | grep 52698' ... ¡y ni siquiera noté que tu computadora se llamaba 'maíz' cuando escribí esto! :PAG – icedwater

0

En mi caso, el problema era que el sistema remoto no tenía DNS configurado correctamente arriba, y ni siquiera podría resolver su propio nombre de host. Asegúrese de tener un DNS que funcione en /etc/resolv.conf en el sistema remoto.

2

Experimenté este problema, pero fue mientras me conectaba a un servidor en el que no tengo privilegios de sudo, por lo que la respuesta superior que sugería runing sudo netstat ... no era factible para mí.

Finalmente descubrí que era porque todavía había instancias de ejecución de compañero, por lo que usé ps para enumerar los procesos en ejecución y luego kill -9 pid (donde pid es la identificación del proceso para el compañero).

Cuestiones relacionadas