GNU/Linux >> Tutoriales Linux >  >> Linux

SSH a hosts remotos a través de un proxy o bastión con ProxyJump

El concepto de hosts bastión no es nada nuevo para la informática. Los hosts de Baston suelen ser sistemas reforzados de cara al público que sirven como punto de entrada a los sistemas detrás de un firewall u otra ubicación restringida, y son especialmente populares con el auge de la computación en la nube.

El ssh El comando tiene una manera fácil de utilizar hosts bastión para conectarse a un host remoto con un solo comando. En lugar de usar primero SSH en el host bastión y luego usar ssh en el bastión para conectarse al host remoto, ssh puede crear la conexión inicial y la segunda mediante usando ProxyJump .

ProxyJump

El ProxyJump , o el -J bandera, se introdujo en ssh versión 7.3. Para usarlo, especifique el host bastión para conectarse después de -J bandera, más el host remoto:

$ ssh -J <bastion-host> <remote-host>

También puede establecer nombres de usuario y puertos específicos si difieren entre los hosts:

$ ssh -J user@<bastion:port> <user@remote:port>

El ssh página man (o manual) (man ssh ) señala que se pueden especificar múltiples nombres de host separados por comas para saltar a través de una serie de hosts:

$ ssh -J <bastion1>,<bastion2> <remote>

Esta característica es útil si hay varios niveles de separación entre un bastión y el host remoto final. Por ejemplo, un host de bastión público que da acceso a un conjunto de hosts de "nivel web", dentro del cual se puede acceder a un grupo de "nivel de base de datos" más protegido.

Hosts proxy de codificación fija en ~/.ssh/config

El -J proporciona flexibilidad para especificar fácilmente hosts proxy y remotos según sea necesario, pero si un host bastión específico se usa regularmente para conectarse a un host remoto específico, el ProxyJump la configuración se puede establecer en ~/.ssh/config para hacer automáticamente la conexión al bastión en ruta al host remoto:

### The Bastion Host
Host bastion-host-nickname
  HostName bastion-hostname

### The Remote Host
Host remote-host-nickname
  HostName remote-hostname
  ProxyJump bastion-host-nickname

Usando la configuración de ejemplo anterior, cuando un ssh la conexión se realiza así:

$ ssh remote-host-nickname

El ssh El comando primero crea una conexión con el host bastión bastion-hostname (el host al que se hace referencia, por apodo, en el ProxyJump del host remoto configuración) antes de conectarse al host remoto.

Una alternativa:Reenvío de stdin y stdout

ProxyJump es la forma simplificada de usar una función que ssh ha tenido durante mucho tiempo: ProxyCommand . ProxyCommand funciona reenviando la entrada estándar (entrada estándar) y la salida estándar (salida estándar) desde la máquina remota a través de los servidores proxy o bastión.

El ProxyCommand en sí mismo es un comando específico que se usa para conectarse a un servidor remoto; en el caso del ejemplo anterior, sería el manual ssh comando usado para conectarse primero al bastión:

$ ssh -o ProxyCommand="ssh -W %h:%p bastion-host" remote-host

El %h:%p argumentos al -W marca arriba especifica para reenviar el estándar de entrada y salida al host remoto (%h ) y el puerto del host remoto (%p ).

ProxyCommand en ~/.ssh/config

Al igual que con ProxyJump , ProxyCommand se puede configurar en ~/.ssh/config archivo para hosts que siempre usan esta configuración:

Host remote-host
  ProxyCommand ssh bastion-host -W %h:%p

Con esta configuración en ~/.ssh/config , cualquier ssh la conexión al host remoto se logra reenviando stdin y stdout a través de una conexión segura desde bastion-host .

El ssh El comando es una herramienta poderosa. Si bien podría usarse principalmente en su forma más simple, ssh user@hostname , hay literalmente docenas de usos, con indicadores y configuraciones para realizar conexiones de un host a otro. Echa un vistazo a ssh página del manual (man ssh ) en algún momento para descubrir todas las diferentes opciones disponibles con este programa aparentemente simple.


Linux
  1. Cómo configurar conexiones SSH personalizadas para simplificar el acceso remoto

  2. SSH - "LA IDENTIFICACIÓN DEL HOST REMOTO HA CAMBIADO"

  3. compruebe si el archivo existe en el host remoto con ssh

  4. ¿SSH con Authorized_keys a un sistema Ubuntu con homedir encriptado?

  5. ¿Cómo puedo evitar la verificación de host de SSH para hosts conocidos?

Comandos SSH en Linux con ejemplos de uso

¿Cómo conectarse a Internet a través de un servidor remoto a través de una conexión Ssh?

Cómo conectar un host remoto usando el comando ssh

Eliminar archivos del host remoto mediante SSH

¿Cómo puedo usar SSH con un proxy SOCKS 5?

Puede hacer ping/ssh a través de LAN pero no con Wi-Fi