Tengo problemas para realizar un túnel a través de un servidor ssh1. Esto está en la máquina de un cliente y no, no actualizarán a ssh2.
Un poco de historia: puedo hacer un túnel con éxito a través de la puerta de enlace del cliente
localhost -> gateway.customer.example.com -> srv.customer.internal
usando esta configuración
Host gateway
Hostname gateway.customer.example.com
IdentityFile ~/.ssh/mykey
...
Host srv-tunnel
ProxyCommand ssh gateway -W srv.customer.internal:22
IdentityFile ~/.ssh/mykey
...
y luego simplemente
$ ssh srv-tunnel
que funciona muy bien y establece el túnel automáticamente, utilizando el archivo de claves ~/.ssh/mykey
.
Intenté usar una configuración similar para este túnel de múltiples saltos:
localhost -> gateway.customer.example.com
|
v
onemoregateway.customer.internal -> srv2.customer.internal
pero esta vez elonemoregateway
está ejecutando ssh 1 y no tiene nc
disponible. Puedo enviar ssh onemoregateway
y el mensaje me dice que The only permitted commands are ssh and scp.
cuando intento configurar una conexión de reenvío como se indica arriba, ssh sale con un error stdio forwarding require Protocol 2
.
Sin embargo, no puedo hacer ssh directamente desde onemoregateway
to srv2
, porque la clave privada solo está en mi máquina local. Para complicar aún más las cosas, necesito una clave para gateway
y otra clave para onemoregateway
y srv2
.
Entonces, ¿cómo puedo hacer un túnel hasta srv2
?
Siento que debe ser posible de alguna manera, ya que mis colegas lo hicieron usando Putty+Pageant en Windows, pero yo estoy en Linux.
Respuesta1
Ok, encontré una manera de hacerlo, pero parece que no hay manera de hacer que el túnel sea transparente.
Host gateway
Hostname gateway.customer.example.com
IdentityFile ~/.ssh/mykey
...
Host tunnel-to-srv2
ProxyCommand ssh gateway -W onemoregateway.customer.internal
IdentityFile ~/.ssh/myotherkey
Protocol 1
LocalForward 10022 srv2.customer.internal:22
...
Host srv2
Hostname localhost
Port 10022
IdentityFile ~/.ssh/myotherkey
Protocol 1
...
Y ahora tengo que hacer
$ ssh tunnel-to-srv2
y, finalmente, en una terminal separada*
$ ssh srv2
* No puedo encontrar una manera de enviar el proceso ssh de tunelización a un segundo plano, ni siquiera con-fNT
Editar: resulta que onemoregateway
sí lo tiene nc
y puedo ejecutarlo, pero necesito usar la ruta completa/bin/nc
Entonces, después de todo tengo esta configuración.
Host gateway
Hostname gateway.customer.example.com
IdentityFile ~/.ssh/mykey
...
Host tunnel-to-srv2
ProxyCommand ssh gateway -W onemoregateway.customer.internal
IdentityFile ~/.ssh/myotherkey
Protocol 1
...
Host srv2
ProxyCommand ssh tunnel-to-srv2 /bin/nc srv2.customer.internal 22
IdentityFile ~/.ssh/myotherkey
Protocol 1
...
y obtengo un salto de túnel transparente con solo ejecutar
$ ssh srv2