SSH ProxyCommand un host para llegar a otro

SSH ProxyCommand un host para llegar a otro

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

información relacionada