a menudo tengo que descargar un archivo al que no se puede acceder directamente a través de la primera conexión SSH. Por ejemplo, estoy en una máquina con Windows y quiero acceder a otra máquina a la que solo se puede acceder desde la LAN. Eso significa que primero debo conectarme a una máquina intermedia y SSH a la siguiente.
Sería fácil usar pscp para obtener el archivo, si estuviera disponible para la primera máquina. ¿Se podría usar el reenvío de puertos SSH en este escenario?
Respuesta aceptada:
Sí, el reenvío de puertos SSH se puede usar en este caso, pero también puede recibir advertencias sobre claves de host incorrectas o no válidas al intentarlo. Algunos clientes SSH, como OpenSSH, rastrean las claves de host SSH solo por dominio o IP y no incluyen el número de puerto. PuTTY parece registrar el número de puerto con la clave de host y no debería sufrir este problema siempre que sea coherente con los números de puerto que usa para cada host. Recomendaría agregar los reenvíos de puertos a una sesión guardada en PuTTY. Luego, también puede guardar las sesiones adicionales para los diversos hosts remotos como sesiones guardadas y usarlas con pscp/psftp. Puede comenzar con cualquier puerto de número alto para el reenvío, como 2220, y subir uno desde allí para cada host que necesite reenviar a través de un host intermedio. Agregar a la sesión guardada para intermediate
puerto local reenvía como puerto 2220
y destino remote1:22
y puerto 2221
con destino remote2:22
para hosts remotos remote1
y remote2
Luego crea sesiones para remote1
con destino localhost
y puerto SSH 2220
y una sesión para remote2
con destino localhost
y puerto SSH 2221
. Para usar sesiones con pcsp/psftp use @session-name
para el anfitrión.
El problema ocurre cuando de alguna manera ha asociado una clave de host SSH con localhost e intenta conectarse a un puerto local que se está reenviando a una computadora diferente. Con OpenSSH, solucioné este problema usando HostKeyAlias
. Agregué entradas a mi ~/.ssh/config
así:
Host intermediate
HostName intermediate.example.org
LocalForward 2220 remote1.example.org:22
LocalForward 2222 remote2.example.org:22
Host remote1
HostName localhost
Port 2220
HostKeyAlias remote1.example.org
Host remote2
HostName localhost
Port 2221
HostKeyAlias remote2.example.org
Sin embargo, mi solución preferida fue cuando implementé IPv6 en mi red doméstica y laboral y ya no tuve que preocuparme por conectarme primero a un servidor intermedio para llegar a mi destino final.
Relacionado:Linux:¿algún riesgo grave si Mint 17 cree que es Ubuntu?