Cómo usar SSH para conectarse a un servidor remoto

0 acciones
0
0
0
0

Introducción

Una de las herramientas esenciales que debe dominar un administrador de sistemas es SSH. SSH o Secure Shell es un protocolo utilizado para iniciar sesión de forma segura en sistemas remotos. Es la forma más común de acceder a servidores Linux de forma remota. En esta guía, explicaremos cómo usar SSH para conectarse a un sistema remoto.

Sintaxis básica

Para conectarse a un sistema remoto mediante SSH, usamos el comando ssh. Si usa Windows, deberá instalar una versión de OpenSSH para poder usar SSH desde la terminal. Si prefiere trabajar con PowerShell, puede consultar la documentación de Microsoft para agregar OpenSSH a PowerShell. Si prefiere disponer de un entorno Linux completo, puede configurar WSL (el Subsistema de Windows para Linux), que incluye SSH por defecto. Finalmente, como tercera opción ligera, puede instalar Git para Windows, que proporciona un entorno de terminal bash para Windows que incluye el comando ssh. Ambos son compatibles, y la opción que elija dependerá de sus preferencias. Si usa Mac o Linux, ya tendrá el comando ssh en su terminal.

La forma más simple del comando es:

ssh remote_host

En este ejemplo, "host_remoto" es la dirección IP o el nombre de dominio al que desea conectarse. Este comando asume que su nombre de usuario en el sistema remoto es el mismo que el de su sistema local.

Si su nombre de usuario es diferente en el sistema remoto, puede especificarlo utilizando esta sintaxis:

ssh remote_username@remote_host

Después de conectarse al servidor, es posible que se le solicite verificar su identidad mediante una contraseña. Más adelante veremos cómo generar claves para usarlas en lugar de contraseñas.

Para salir de ssh y regresar a su shell local, escriba:

exit

¿Cómo funciona SSH?

SSH funciona conectando un programa cliente a un servidor SSH llamado sshd. En la sección anterior, ssh era el programa cliente. El servidor SSH ya se estaba ejecutando en el host remoto especificado. En casi todos los entornos Linux, el servidor SSHd debería iniciarse automáticamente. Si no se está ejecutando por algún motivo, es posible que necesite acceder temporalmente a su servidor mediante una consola web o una consola serie local. El proceso necesario para iniciar el servidor SSH depende de la distribución de Linux que utilice.

En Ubuntu, puedes iniciar el servidor ssh escribiendo:

sudo systemctl start ssh

Esto debería iniciar el servidor sshd y luego podrás iniciar sesión de forma remota.

Cómo configurar SSH

Al cambiar la configuración de SSH, se modifica la configuración del servidor sshd. En Ubuntu, el archivo de configuración principal de sshd se encuentra en /etc/ssh/sshd_config. Antes de editarlo, haga una copia de seguridad de la versión actual de este archivo:

sudo cp /etc/ssh/sshd_config{,.bak}

Ábrelo usando nano o tu editor de texto favorito:

sudo nano /etc/ssh/sshd_config

Querrás dejar la mayoría de las opciones en este archivo tal como están, pero hay algunas que quizás quieras revisar:

Port 22

La declaración del puerto especifica en qué puerto escucha el servidor sshd las conexiones. Por defecto, es el 22. Probablemente debería dejar esta configuración sin modificar a menos que tenga razones específicas para hacerlo. Si cambia de puerto, le mostraremos cómo conectarse al nuevo puerto a continuación.

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key

Las declaraciones de claves de host especifican dónde buscar las claves de host globales. Más adelante explicaremos qué es una clave de host.

SyslogFacility AUTH
LogLevel INFO

Estos dos elementos indican el nivel de registro que debe realizarse.

Si tiene problemas con SSH, aumentar la tasa de registro puede ser una buena manera de descubrir el problema.

LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

Estos parámetros especifican cierta información de inicio de sesión.

LoginGraceTime especifica cuántos segundos se mantendrá la conexión abierta sin un inicio de sesión exitoso. Se recomienda configurar este tiempo un poco más largo que el tiempo que tarda un inicio de sesión normal. PermitRootLogin selecciona si el usuario root puede iniciar sesión. En la mayoría de los casos, se recomienda cambiarlo a no cuando se crea una cuenta de usuario con privilegios elevados (mediante su o sudo) y que pueda iniciar sesión por SSH para minimizar el riesgo de acceso root a su servidor. .strictModes es una protección de seguridad que impide los intentos de inicio de sesión si los archivos de autenticación son de lectura pública. Esto impide los intentos de inicio de sesión cuando los archivos de configuración no son seguros.

X11Forwarding yes
X11DisplayOffset 10

Estos parámetros configuran una función llamada Reenvío X11. Esto permite ver la interfaz gráfica de usuario (GUI) de un sistema remoto en el sistema local. Esta opción debe estar habilitada en el servidor y debe indicarse al conectarse con la opción -X a un cliente SSH. Después de realizar los cambios, guarde y cierre el archivo. Si usa nano, presione Ctrl+X, luego Y y luego Enter cuando se le solicite. Si modificó alguna configuración en /etc/ssh/sshd_config, asegúrese de recargar el servidor sshd para aplicar los cambios:

sudo systemctl reload ssh

Debes probar tus cambios exhaustivamente para asegurarte de que funcionan como esperas. Es recomendable tener varias sesiones de terminal abiertas mientras realizas cambios. Esto te permitirá revertir la configuración si es necesario sin bloquearte.

Cómo iniciar sesión en SSH con claves

Si bien el inicio de sesión remoto con contraseñas es útil, configurar la autenticación basada en claves es más rápido y más seguro.

¿Cómo funciona la autenticación basada en clave?

La autenticación basada en claves funciona mediante la creación de un par de claves: una clave privada y una clave pública. La clave privada reside en el equipo cliente y se mantiene segura y secreta. La clave pública puede proporcionarse a cualquier persona o almacenarse en cualquier servidor al que se desee acceder. Al intentar conectarse con un par de claves, el servidor utiliza la clave pública para crear un mensaje para el equipo cliente, que solo puede leer la clave privada. El equipo cliente envía la respuesta correspondiente al servidor, y este reconoce la legitimidad del cliente. Este proceso se realiza automáticamente tras configurar las claves.

Cómo crear claves SSH

Las claves SSH deben crearse en el equipo desde el que desea iniciar sesión. Normalmente, este es su equipo local.

Introduzca lo siguiente en la línea de comando:

ssh-keygen -t rsa

Es posible que se le solicite que establezca una contraseña para los archivos de claves, pero esto es poco común y debe presionar Enter al ejecutar los comandos para aceptar los valores predeterminados. Sus claves se crearán en ~/.ssh/id_rsa.pub y ~/.ssh/id_rsa.

Cambie al directorio .ssh escribiendo el siguiente código:

cd ~/.ssh

Mira los permisos del archivo:

ls -l
Output
-rw-r--r-- 1 demo demo 807 Sep 9 22:15 authorized_keys
-rw------- 1 demo demo 1679 Sep 9 23:13 id_rsa
-rw-r--r-- 1 demo demo 396 Sep 9 23:13 id_rsa.pub

Como puede ver, el archivo id_rsa solo puede ser leído y escrito por el propietario. Esto ayuda a mantenerlo en secreto.

Sin embargo, el archivo id_rsa.pub se puede compartir y tiene los permisos adecuados para esta actividad.

Cómo transferir la clave pública al servidor

Si actualmente tiene acceso a un servidor mediante contraseña, puede copiar su clave pública emitiendo este comando:

ssh-copy-id remote_host

Esto iniciará una sesión SSH. Tras introducir su contraseña, se copiará su clave pública al archivo de claves autorizadas del servidor, lo que le permitirá iniciar sesión sin contraseña la próxima vez.

Opciones del lado del cliente

Hay varios comandos opcionales que puedes proporcionar al conectarte por SSH. Algunos de ellos pueden ser necesarios para que coincidan con la configuración de sshd del host remoto.

Por ejemplo, si cambió el número de puerto en su configuración sshd, deberá hacer coincidir ese puerto en el lado del cliente escribiendo:

ssh -p port_number remote_host

Si desea ejecutar solo un comando en un sistema remoto, puede especificarlo después del host de la siguiente manera:

ssh remote_host command_to_run

Te conectas al dispositivo remoto, te autenticas y se ejecuta el comando.

Como dijimos antes, si el reenvío X11 está habilitado en ambas computadoras, puedes acceder a esa funcionalidad escribiendo lo siguiente:

ssh -X remote_host

Siempre que tenga las herramientas adecuadas en su computadora, los programas GUI que utilice en el sistema remoto ahora abrirán su propia ventana en su sistema local.

Deshabilitar la autenticación de contraseña

Si ha creado claves SSH, puede aumentar la seguridad de su servidor desactivando la autenticación solo con contraseña. Además de la consola, la única forma de iniciar sesión en su servidor es mediante la clave privada, que está emparejada con la clave pública que instaló en el servidor.

Como root o un usuario con privilegios de sudo, abra el archivo de configuración sshd:

sudo nano /etc/ssh/sshd_config

Busque la línea que indica la autenticación de contraseña y elimínela eliminando el # inicial. Luego, puede cambiar su valor a no:

PasswordAuthentication no

Otras dos configuraciones que no es necesario cambiar (siempre que no haya modificado este archivo) son PubkeyAuthentication y ChallengeResponseAuthentication. Están configuradas por defecto y deberían tener el siguiente formato:

PubkeyAuthentication yes
ChallengeResponseAuthentication no

Después de realizar los cambios, guarde y cierre el archivo.

Ahora puedes recargar el demonio SSH:

sudo systemctl reload ssh

La autenticación de contraseña ahora debería estar deshabilitada y su servidor solo debería ser accesible a través de la autenticación de clave SSH.

Resultado

Aprender a usar SSH te será muy útil en tus futuras iniciativas de computación en la nube. A medida que uses las diferentes opciones, descubrirás funciones más avanzadas que te facilitarán la vida. SSH se ha mantenido popular por su seguridad, ligereza y utilidad en diversas situaciones.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

También te puede gustar

Cómo instalar IBSng en CentOS 6/7

Tutorial de instalación de IBSng en CentOS 6/7. En este artículo se proporciona un tutorial de instalación de IBSng en CentOS 6/7 para ayudarle…