windows ssh tunnel

windows - ssh tunnel proxy



cadena de tunelización ssh (6)

Este método es similar a la forma en que puede usar el comando proxy en el archivo de configuración ssh abierto.

Un requisito previo para este método es que Pageant debe ser usado con autenticación de clave pública por todos los hosts intermedios (proxy); de lo contrario, terminará con un cursor intermitente y nada más. Para obtener más información sobre Pageant, PuTTYgen y las claves públicas, consulte:
http://the.earth.li/~sgtatham/putty/0.62/htmldoc/Chapter8.html#pubkey
http://the.earth.li/~sgtatham/putty/0.62/htmldoc/Chapter9.html#pageant

Disponemos de cuatro máquinas accesibles en este orden.
PuttyPC -> server01 -> server02 -> server03

Para server01 tenemos una sesión de Putty guardada como:
Ventana principal: user1@server01 // puerto 22 // SSH
Guarda esta sesión como server01

Para server02 tenemos una sesión de Putty guardada como:
Ventana principal: user2@server02 // puerto 22 // SSH
Ventana de configuración del proxy: escriba local comando local // proxy plink -load server01 -nc %host:%port
Guarda esta sesión como server02

Para server03 tenemos una sesión Putty guardada como:
Ventana principal: user3@pc3 // puerto 22 // SSH
Panel de configuración del proxy: escriba local comando local // proxy plink -load server02 -nc %host:%port
Guarda esta sesión como servidor03

Esto significa que la sesión guardada para server03 llamará a la sesión guardada para server02 y server02 sesión guardada llamará la sesión server01.

Aquí está el escenario

Estoy tratando de obtener acceso scp al servidor 3, pero solo hay acceso ssh público al servidor 1. Para ssh al servidor 3, tengo que ssh al servidor1, ssh al servidor2, luego ssh al servidor3.

Mi esperanzador resultado final sería que podría WinSCP para localhost: 8022 y me dará acceso a archivos a server3.

Estoy tratando de usar túneles ssh, pero a través de todos los tutoriales y preguntas que he leído, ninguno parece funcionar para este escenario.

Estoy usando masilla en Windows.

Cualquier sugerencia sería realmente útil. Gracias.


Hay una solución de script perl muy bien descrita here . Lea los comentarios en la publicación también.

Lea más sobre el reenvío de agente SSH (referido en los comentarios de la publicación del script de perl)


La primera solución que viene a la mente es hacer un túnel de un puerto local a cada uno de sus servidores. Dado que SSH usa el puerto 22, usaremos cada conexión SSH para canalizar un puerto local al siguiente puerto 22 del servidor.

Cuando abre PuTTY, se encuentra con el cuadro de diálogo Configuración de PuTTY. Las dos categorías que deberá editar son "Sesión" y "Conexión → SSH → Túneles".

  1. Abra una copia de PuTTY. Utilice estos ajustes:

    • Conectarse al host

      • Nombre de host: server1
      • Puerto: 22
    • Tunel un puerto

      • Modo local
      • Puerto de origen: 15500
      • Destino: server2:22 (el puerto de shell seguro)

    Ahora, cada vez que se conecta al puerto 15500 en su máquina local, su conexión se está canalizando al puerto 22 en server2.

  2. Abra una copia de PuTTY. Utilice estos ajustes:

    • Conectarse al host
      • Nombre de host: localhost
      • Puerto: 15500
    • Tunel un puerto
      • Modo local
      • Puerto de origen: 15501
      • Destino: server3:22 (el puerto de shell seguro)
  3. Abra una copia de PuTTY. Utilice estos ajustes:

    • Conectarse al host
      • Nombre de host: localhost
      • Puerto: 15501
    • Tunel un puerto
      • Modo local
      • Puerto de origen: 15502
      • Destino: server3:22 (el puerto de shell seguro)
  4. Use WinSCP para conectarse a localhost en el puerto 15502 . Su conexión se canalizará como si se conectara al server3 directamente.

Déjame saber en los comentarios si esto funciona para ti. ¡Buena suerte!


La respuesta fue revertir el túnel desde server3.


Si solo necesita sobrepasar un servidor, me resultó más fácil hacer esta configuración directamente en WinSCP.

escenario: computadora-> servidor1-> servidor2

1: Configurar la conexión al servidor2

2: Haga clic en avanzado-> Conexión-> Túnel

3: habilitar el túnel SSH y configurar el host en server1


En OpenSSH, uso esta configuración cuando necesito túneles. Esto me permite escribir directamente sftp server3 sin tener que preocuparme por iniciar manualmente los túneles server2 y server1 primero.

# ~/.ssh/config # to connect to server2, tunnel through server1 Host server2 ProxyCommand ssh server1 nc %h %p # to connect to server3, tunnel through server2 Host server3 ProxyCommand ssh server2 nc %h %p

Para ser más completo, por lo general uso ssh -oCiphers=arcfour128,arcfour256,arcfour,blowfish-cbc -oControlMaster=no -oForwardX11=no -oForwardAgent=no -oPermitLocalCommand=no -oClearAllForwardings=yes server1 nc %h %p la ProxyCommand la que se lo ProxyCommand .

  • La conexión ssh que se está canalizando ya está cifrada, por lo que no tiene sentido usar los aes / 3des más pesados ​​para la capa exterior; arcfour y el arcfour son más rápidos.
  • El resto de las configuraciones -o**** están fuera de paranoia, por lo que nada se rompe incluso si se Host server1 stanza Host server1 con configuraciones realmente extrañas a ssh_config .

De manera similar, puede configurar PuTTY para usar el comando proxy plink -P %proxyport -pw %pass %user@%proxyhost nc %host %port , y configurar el nombre de host / puerto / usuario / contraseña del proxy en el panel de configuración Conexión / Proxy en consecuencia . plink y el resto de la suite PuTTY ( pscp , psftp , etc.) cargan cualquier cosa guardada en la configuración gráfica de PuTTY; Esperemos que WinSCP también lo haga. (No lo uso, por lo que no estoy muy familiarizado con sus características).