Esta página ha sido traducida por una máquina.

Acceso remoto mediante SSH

Utilice conexiones SSH para acceder de forma segura a recursos, redes y aplicaciones remotos.

Acceso remoto a servicios y redes mediante SSH

El reenvío del puerto SSH, también conocido como túnel SSH, transporta datos de forma segura a través de una conexión SSH cifrada entre un sistema local y un sistema remoto. Después de establecer un túnel SSH, el cliente SSH recibe en un puerto local especificado y reenvía el tráfico que llega a ese puerto mediante la conexión al puerto remoto correspondiente.

Al cifrar los datos en tránsito, el reenvío del puerto SSH garantiza que la información confidencial sea segura e inaccesible, permite el acceso seguro a servicios y redes remotas sin exposición directa a Internet y evita los firewalls y las restricciones de red.

Los tres tipos principales de reenvío de puerto SSH son:

Puede utilizar el reenvío del puerto para acceder a un servicio que no está expuesto a la interfaz de red pública. Puede configurar un puerto local reenviado para acceder a un servicio (como una base de datos) en un servidor remoto. La base de datos del servidor no está expuesta a la interfaz de red pública, pero puede crear un túnel desde una máquina local hasta el puerto interno del servidor de base de datos. A continuación, puede conectarse a localhost y todo el tráfico se reenviaría a través del túnel SSH a la base de datos remota.

Puede utilizar el reenvío de puerto inverso para otorgar a alguien fuera de la red local acceso a un servicio interno. Por ejemplo, puede que desee mostrar a otro desarrollador una aplicación web que haya desarrollado en la máquina local. Debido a que la máquina no tiene una IP pública, el otro desarrollador no puede acceder a la aplicación a través de Internet. Sin embargo, si tiene acceso a un servidor SSH remoto, puede configurar el reenvío de puerto inverso para proporcionar acceso al desarrollador.

Configurar el reenvío del puerto en el servidor

Para configurar el reenvío del puerto SSH:

  1. Desde una línea de comandos, mediante privilegios administrativos, conéctese a la instancia mediante SSH.
  2. Editar el archivo /etc/ssh/sshd_config. Como mínimo, verifique los siguientes parámetros:
    • AllowTCPForwarding

      Permite el reenvío del puerto TCP. Cuando se omite, el valor por defecto es yes, que permite reenvíos de puerto TCP único y proxy SOCKS

    • AllowStreamLocalForwarding

      Permite el reenvío de sockets de dominio UNIX. Si se omite, el valor por defecto es yes.

Reenvío de puerto local

El reenvío de puerto local mediante SSH asigna un puerto local en el sistema cliente a un puerto remoto en el sistema servidor. Esta configuración le permite acceder a servicios en el sistema remoto que, de lo contrario, son inaccesibles porque los servicios pueden ejecutarse detrás de un firewall o pueden no recibir en una interfaz de red pública.

Para crear un túnel de reenvío de TCP directo, utilice la opción ssh -L:

ssh -L <bind_address>:<port>:<destination>:<destination_port> <user>@<remote_ssh_server>
  • bind_address

    Opcional y asigna una interfaz local para recibir conexiones. Si se omite, ssh solo se enlaza en las interfaces de bucle de retorno. Para enlazar en todas las interfaces, puede utilizar "0.0.0.0" o "::".

  • port

    El número de puerto local. Puede utilizar cualquier número de puerto mayor que 1024.

  • destination

    La IP o el nombre de host de la máquina de destino. Si el destino está en el servidor remoto, puede utilizar localhost.

  • destination_port

    Puerto en la máquina de destino.

  • user@remote_ssh_server

    El usuario SSH remoto y la dirección IP del servidor.

Por ejemplo:

ssh -L <8080>:localhost:<8888> <user>@<129.145.0.164>

Esto abriría una conexión SSH al servidor remoto en 192.168.1.20 y abriría un túnel al puerto de host local 8888.

Reenvío de puerto dinámico

Utilice el reenvío de puerto dinámico para que el cliente SSH reciba en un puerto de enlace especificado y actúe como servidor proxy SOCKS. No es necesario especificar un host de destino, ya que todas las conexiones entrantes en el puerto especificado se reenvían a través del túnel a un puerto dinámico en la máquina de destino.

Para crear un puerto dinámico hacia adelante, utilice la opción ssh -D.

ssh -D <bind_address>:<port> <user>@<remote_ssh_server>

Reversión de reenvío de puerto

Un túnel inverso reenvía cualquier conexión recibida en el servidor SSH remoto a la red de cliente local.

Para crear un puerto inverso hacia adelante, utilice la opción ssh -R.

  • Para el reenvío inverso de puerto local:
    ssh -R <bind_address>:<port>:<destination>:<destination_port> <user>@<remote_ssh_server>
  • Para el reenvío inverso de puerto dinámico:
    ssh -R <bind_address>:<port> <user>@<remote_ssh_server>

Acceso remoto a aplicaciones basadas en X11 mediante SSH

El reenvío de X11 permite utilizar una conexión SSH para iniciar una aplicación gráfica basada en X11 en un sistema Oracle Linux remoto y utilizarla desde un sistema local. El sistema remoto no necesita tener un servidor X11 o un entorno de escritorio gráfico en ejecución, pero el sistema local debe tener un servicio compatible con X11 en ejecución.

Active el reenvío de X11 en el servidor remoto.

  1. Desde una línea de comandos, mediante privilegios administrativos, conéctese a la instancia mediante SSH.
  2. Active X11Forwarding en el archivo /etc/ssh/sshd_config.

    Si se omite X11Forwarding de /etc/ssh/sshd_config, el valor por defecto es no. Para activar el reenvío de X11, agregue una entrada que defina el valor de este parámetro en yes.

    X11Forwarding yes
  3. Instale los paquetes X11:
    dnf install xorg-x11-xauth xorg-x11-fonts-\* xorg-x11-utils dbus-x11
    Si nunca ha ejecutado una aplicación gráfica en el servidor remoto, la primera vez que se conecte al servidor remoto mediante el reenvío X11, se mostrará un mensaje de advertencia:
    /usr/bin/xauth: file /home/user/.Xauthority does not exist

    Puede ignorar esta advertencia como . El archivo Xauthority se crea automáticamente.

  4. Reinicie el servicio sshd para que el cambio surta efecto:
    sudo systemctl restart sshd.service

Iniciar una aplicación de forma remota mediante el reenvío X11

  1. Inicie sesión en el servidor remoto mediante SSH:
    ssh -X <user>@<server1.example.com>
    
    The authenticity of host 'remote-server (192.168.122.120)' can't be established.
    ECDSA key fingerprint is SHA256:uYwFlgtP/2YABMHKv5BtN7nHK9SHRL4hdYxAPJVK/kY.
    Are you sure you want to continue connecting (yes/no/[fingerprint])?
  2. Introduzca yes.
    Warning: Permanently added 'remote-server' (ECDSA) to the list of known hosts.
  3. Inicie una aplicación gráfica en el servidor remoto que se muestra en el sistema local. Por ejemplo, para ejecutar un editor de texto gráfico como gedit, introduzca:
    gedit &
    Al agregar & (ampersand) al final, se ejecuta la aplicación en segundo plano, liberando el terminal para otros comandos.