
En nuestro ENV tenemos 2 servidores jumphost en los que intentamos iniciar sesión y ejecutar el comando ssh en el servidor remoto, tenemos el archivo ssh/confg para cada ubicación con la ayuda de sshproxy ingresamos al servidor Jump2. Queremos fusionar el archivo de configuración para que podamos acceder a todos los servidores de ubicación al mismo tiempo.
Consulte a continuación ENV
Laptop -------->
Jumphost1 --------->
Jumphost2 --------->
Servidor remoto
En realidad, estamos planeando ejecutar un script desde mi máquina local y almacenar el resultado en el local. Entonces, para archivar esta tarea necesitamos hacer ssh a 2 jumphost y ejecutar el siguiente comando en el servidor remoto, que ejecutará el script desde la máquina local y obtendrá el resultado en la propia máquina local.
Se puede acceder a Jump1 a través del puerto 2222. El usuario será el mismo usuario.
pero para acceder al servidor remoto hay un usuario diferente1
ssh usuario1@ip < ./script >> archivo.txt &&
Configure su ~/.ssh/config:
Host Jump1 Usuario jump1user Puerto 2222 Host Jump2 ProxyCommand ssh -W %h:%p Jump1 Usuario jump2user Host RemoveServer ProxyCommand ssh -W %h:%p Jump2 Usuario usuario remoto
Con este archivo anterior podemos iniciar sesión directamente en el servidor jump2 sin ningún problema. Pero tenemos que cambiar el archivo de configuración cada vez para cada ubicación.
Para ejecutar el siguiente comando ssh de ejemplo en un script para recopilar información de cada región, necesitamos un único archivo de configuración.
Ejemplo
ssh jump2 | ssh user1@remoteserver-ip < ./script >> file.txt &&
Respuesta1
Espero que este ejemplo le permita utilizar un solo archivo:
Host *
User username
IdentityFile /home/username/.ssh/identity
Host some*
ProxyCommand /usr/bin/ssh -p 2222 username@jumphost /usr/bin/nc %h %p 2> /dev/null
Host other*
ProxyCommand /usr/bin/ssh -p 2222 username@otherjumphost /usr/bin/nc %h %p 2> /dev/null
Host something
HostName 1.2.3.4
Host somethingelse
HostName 2.3.4.5
Host otherthing
HostName 3.4.5.6
Respuesta2
Host remotehost
ProxyCommand /usr/bin/ssh -p 2222 username@jumphost /usr/bin/nc %h %p 2> /dev/null
Dado que solo se puede acceder al jumphost en el puerto 2222 como usted describe, debe informar ese hecho a la conexión SSH proxy.
Como una edición adicional de la pregunta ha aclarado que en realidad haydoshosts a través de los cuales realizará el proxy, esto se vuelve un poco más complejo, pero sólo un poco. Dado:
local.example.com
- El host en el que trabajas directamente.jump1.example.com
- El host desde el que te conectas directamentelocal
jump2.example.com
- El host desde el que te conectas directamentejump1
endpoint.example.com
- El host al que finalmente te conectarás.
En local.example.com
, agregue lo siguiente a su configuración SSH:
host endpoint.example.com
ProxyCommand /usr/bin/ssh -p 2222 [email protected] /usr/bin/nc %h %p 2> /dev/null
En jump1.example.com
, agregue lo siguiente a su configuración SSH:
host endpoint.example.com
ProxyCommand /user/bin/ssh -p 2222 [email protected] /usr/bin/nc %h %p 2> /dev/null
Ahora podrá acceder a través de ambos servidores proxy.ssh [email protected]
local.example.com