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:
Local Port Forwarding reenvía un puerto del cliente al servidor SSH y, a continuación, al puerto de destino.
Dynamic Port Forwarding crea un servidor proxy SOCKS para comunicaciones en un rango de puertos.
Reverse Port Forwarding reenvía un puerto del servidor al cliente y, a continuación, al puerto de destino.
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.
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:
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.
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.
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 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.
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.
Reinicie el servicio sshd para que el cambio surta efecto:
Copiar
sudo systemctl restart sshd.service
Iniciar una aplicación de forma remota mediante el reenvío X11 🔗
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])?
Introduzca yes.
Warning: Permanently added 'remote-server' (ECDSA) to the list of known hosts.
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:
Copiar
gedit &
Al agregar & (ampersand) al final, se ejecuta la aplicación en segundo plano, liberando el terminal para otros comandos.