Estoy tratando de hacer un túnel a un servidor a través de un servidor puente. Hasta ahora, he podido hacer que funcione correctamente desde el shell de comandos usando el siguiente comando:
ssh -A -t [email protected] ssh -A [email protected]
Pero he estado tratando de envolver esto en mi ~/.ssh/config
archivo y tengo problemas. He intentado:
Host axp
User remote_userid
HostName remoteserver.com
IdentityFile ~/.ssh/id_rsa.eric
ProxyCommand ssh -A -t [email protected]_userid.com ssh -A [email protected]%h
Pero cuando lo hago, aparece el siguiente mensaje de error de remoteserver.com
y no estoy seguro de qué lo está causando:
ksh:SSH-2.0-OpenSSH_6.8^M:no encontrado
Sé que cuando inicio sesión en remoteserver.com
, mi shell es /usr/bin/ksh
.
Intenté agregar argumentos de ruta a los comandos ssh en el archivo de configuración, pero no hizo ninguna diferencia.
¿Alguna idea de qué puede ser?
Respuesta aceptada:
La respuesta de Jakuje es correcta, pero desde OpenSSH 7.3
, ahora puedes usar -J
ProxyJump
que es mas facil Ver mis notas:
OpenSSH 7.3
o superior
Usa ProxyJump
. Como se explica en el manual:
-J [[email protected]]host[:port]
Conéctese al host de destino haciendo primero una conexión ssh al host de salto y luego estableciendo un reenvío TCP al destino final desde allí. Se pueden especificar varios saltos separados por comas. Este es un atajo para especificar una directiva de configuración de ProxyJump.
ProxyJump ~/.ssh/config
ejemplo
~/.ssh/config
Host server1
Hostname server1.example.com
IdentityFile ~/.ssh/id_rsa
Host server2_behind_server1
Hostname server2.example.com
IdentityFile ~/.ssh/id_rsa
ProxyJump server1
Conectar con
ssh server2_behind_server1 -v
Agregar -v
para salida detallada
ProxyJump -J
Ejemplo de línea de comando
~/.ssh/config
Host server1
Hostname server1.example.com
IdentityFile ~/.ssh/id_rsa
Host server2
Hostname server2.example.com
IdentityFile ~/.ssh/id_rsa
Conectar con
ssh server2 -J server1 -v
O usa -o
ssh server2 -o 'ProxyJump server1' -v
OpenSSH 5.4
o superior
Utilice ProxyCommand
con -W
~/.ssh/config
Host server1
Hostname server1.example.com
IdentityFile ~/.ssh/id_rsa
Host server2
Hostname server2.example.com
IdentityFile ~/.ssh/id_rsa
ProxyCommand ssh server1 -W %h:%p
Conectar con
ssh server2 -v
O usa -o
ssh server2 -o 'ProxyCommand ssh server1 -W %h:%p' -v
OpenSSH debajo de 5.4
~/.ssh/config
Host server1
Hostname server1.example.com
IdentityFile ~/.ssh/id_rsa
Host server2
Hostname server2.example.com
IdentityFile ~/.ssh/id_rsa
ProxyCommand ssh server1 nc %h %p 2> /dev/null
Conectar con:
ssh server2 -v
O usa -o
ssh server2 -o 'ProxyCommand ssh server1 nc %h %p 2> /dev/null' -v
Fuentes
-J
agregado en OpenSSH 7.3
- ssh(1):agregue una opción ProxyJump y el correspondiente indicador de línea de comando -J
para permitir la indirección simplificada a través de uno o más bastiones SSH
o "hosts de salto".
-W
agregado en OpenSSH 5.4
- Se agregó un 'modo netcat' a ssh(1):"ssh -W host:port ..." Esto conecta
stdio en el cliente a un puerto único en el servidor. Esto
permite, por ejemplo, usar ssh como ProxyCommand para enrutar conexiones
a través de servidores intermedios. bz#1618