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".
Abra una copia de PuTTY. Utilice estos ajustes:
Conectarse al host
- Nombre de host:
server1
- Puerto: 22
- Nombre de host:
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.
Abra una copia de PuTTY. Utilice estos ajustes:
- Conectarse al host
- Nombre de host:
localhost
- Puerto: 15500
- Nombre de host:
- Tunel un puerto
- Modo local
- Puerto de origen:
15501
- Destino:
server3:22
(el puerto de shell seguro)
- Conectarse al host
Abra una copia de PuTTY. Utilice estos ajustes:
- Conectarse al host
- Nombre de host:
localhost
- Puerto: 15501
- Nombre de host:
- Tunel un puerto
- Modo local
- Puerto de origen:
15502
- Destino:
server3:22
(el puerto de shell seguro)
- Conectarse al host
Use WinSCP para conectarse a
localhost
en el puerto15502
. Su conexión se canalizará como si se conectara alserver3
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 elarcfour
son más rápidos. - El resto de las configuraciones
-o****
están fuera de paranoia, por lo que nada se rompe incluso si seHost server1
stanzaHost server1
con configuraciones realmente extrañas assh_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).