Posible duplicado:
ssh a través de múltiples hosts
Para conectarse aservidor BPrimero tengo que hacer ssh paraservidor A. ¿Cuál es la línea de comando para acceder?servidor B?
Respuesta1
Si se puede acceder al servidor B a través de ssh
y solo necesita ssh
(no directamente scp
o sftp
), esto también funciona muy bien:
ssh -t $SERVER_A ssh $SERVER_B
La -t
opción fuerza la asignación de un pseudo-tty incluso cuando se ejecuta un solo comando en el otro extremo. Esto es útil, ya que ssh
necesita un pseudo-tty.
Como estás usando dos instancias anidadas de ssh
, el carácter de escape en la sesión interna es Enter ~ ~(dos tildes). Una tilde enviará el escape al primer caparazón.
Respuesta2
No existe una forma integrada de ssh
hacer esto, aparte de utilizar el reenvío de puertos.
Sin embargo, hay una manera que funciona razonablemente bien: la ProxyCommand
configuración de ssh. Puede especificar eso por host ~/.ssh/config
y usarlo para especificar el comando que se ejecutará para conectarse al puerto ssh remoto.
Lo uso en varios hosts:
host serverB.example.com serverB
ProxyCommand /usr/bin/ssh serverA.example.com /usr/bin/nc %h %p
Consulte la ssh(1)
página del manual para obtener más detalles y, nc(1)
en el netcat
paquete, el comando que estoy usando para reenviar la conexión. (Sin embargo, puede usar cualquier cosa que establezca una conexión TCP y pase entrada y salida estándar a través de ella).