Cómo usar SSH para conectarse a un servidor remoto

Introducción

Una herramienta esencial que debe dominar un administrador de sistemas es SSH.

SSH, o Secure Shell , es un protocolo utilizado para acceder de forma segura a sistemas remotos. Es la forma más común de acceder a servidores Linux remotos.

En esta guía, analizaremos cómo usar SSH para conectarse a un sistema remoto.

Sintaxis básica

Para conectarnos a un sistema remoto usando SSH, usaremos el sshcomando.

Si usa Windows, necesitará instalar una versión de OpenSSH para poder acceder sshdesde una terminal. Si prefiere trabajar con PowerShell, puede consultar la documentación de Microsoft para añadir OpenSSH a PowerShell. Si prefiere disponer de un entorno Linux completo, puede configurar WSL (el Subsistema de Windows para Linux), que se incluirá sshpor defecto. Finalmente, como tercera opción ligera, puede instalar Git para Windows , que proporciona un entorno de terminal bash nativo de Windows que incluye el sshcomando. Todas estas opciones son compatibles, y la que elija dependerá de sus preferencias.

Si estás usando Mac o Linux, ya tendrás el sshcomando disponible en tu terminal.

La forma más directa del comando es:

ssh remote_host

En este ejemplo se utiliza la remote_hostdirección IP o el nombre de dominio al que intenta conectarse.

Este comando asume que su nombre de usuario en el sistema remoto es el mismo que su nombre de usuario en su sistema local.

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

ssh remote_username@remote_host

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

Para salir de la sesión ssh y regresar a su sesión de 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, sshse encontraba el programa cliente. El servidor SSH ya se estaba ejecutando en el remote_hostservidor que especificamos.

En casi todos los entornos Linux, el sshdservidor debería iniciarse automáticamente. Si no se ejecuta 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 un servidor ssh depende de la distribución de Linux que esté utilizando.

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

Cuando cambia la configuración de SSH, está cambiando la configuración del sshdservidor.

En Ubuntu, el sshdarchivo de configuración principal se encuentra en /etc/ssh/sshd_config.

Haga una copia de seguridad de la versión actual de este archivo antes de editarlo:

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

Ábrelo usando nanotu editor de texto favorito:

sudo nano /etc/ssh/sshd_config

Le recomendamos no modificar la mayoría de las opciones de este archivo. Sin embargo, hay algunas que podría considerar: /etc/ssh/sshd_config

Port 22

La declaración del puerto especifica en qué puerto el sshdservidor escuchará las conexiones. Por defecto, es 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 más adelante. /etc/ssh/sshd_config

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

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

SyslogFacility AUTH
LogLevel INFO

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

Si tiene dificultades con SSH, aumentar la cantidad de registros puede ser una buena manera de descubrir cuál es el problema. /etc/ssh/sshd_config

LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

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

LoginGraceTimeEspecifica cuántos segundos se debe mantener activa la conexión sin iniciar sesión correctamente.

Puede ser una buena idea establecer este tiempo apenas un poco más alto que el tiempo que le toma iniciar sesión normalmente.

PermitRootLoginSelecciona si el usuario root puede iniciar sesión.

En la mayoría de los casos, esto se debe cambiar nocuando haya creado una cuenta de usuario que tenga acceso a privilegios elevados (a través de suo sudo) y pueda iniciar sesión a través de SSH para minimizar el riesgo de que alguien obtenga acceso root a su servidor.

strictModeses una protección de seguridad que rechazará un intento de inicio de sesión si los archivos de autenticación son legibles por todos.

Esto evita intentos de inicio de sesión cuando los archivos de configuración no son seguros. /etc/ssh/sshd_config

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 entregada al cliente SSH durante la conexión con la -Xopción.

Después de realizar los cambios, guarde y cierre el archivo. Si usa nano, presione Ctrl+X, luego, cuando se le solicite, Yy luego Enter.

Si cambió alguna configuración en /etc/ssh/sshd_config, asegúrese de volver a cargar su sshdservidor para implementar las modificaciones:

sudo systemctl reload ssh

Debes probar exhaustivamente tus cambios para asegurarte de que funcionen como esperas.

Sería buena idea tener abiertas varias sesiones de terminal mientras se realizan cambios. Esto le permitirá revertir la configuración si es necesario sin bloquearse.

Cómo iniciar sesión en SSH con claves

Si bien es útil poder iniciar sesión en un sistema remoto usando contraseñas, es más rápido y seguro configurar la autenticación basada en claves .

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

La autenticación basada en clave funciona mediante la creación de un par de claves: una clave privada y una clave pública .

La clave privada se encuentra en la máquina del cliente y está protegida y se mantiene en secreto.

La clave pública se puede entregar a cualquier persona o colocar en cualquier servidor al que desee acceder.

Cuando intenta conectarse utilizando un par de claves, el servidor utilizará la clave pública para crear un mensaje para la computadora cliente que sólo se puede leer con la clave privada.

Luego, la computadora cliente envía la respuesta apropiada al servidor, que le indicará que el cliente es legítimo.

Este proceso se realiza automáticamente después de configurar sus claves.

Cómo crear claves SSH

Las claves SSH deben generarse en el ordenador 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 durante las indicaciones para aceptar los valores predeterminados. Sus claves se crearán en ~/.ssh/id_rsa.pub y ~/.ssh/id_rsa .

Cambie al .sshdirectorio escribiendo:

cd ~/.ssh

Mira los permisos de los archivos:

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 id_rsaarchivo solo es legible y escribible para el propietario. Esto ayuda a mantenerlo en secreto.

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

Cómo transferir su 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 una serie de indicadores opcionales que puedes proporcionar al conectarte a través de SSH.

Algunos de estos pueden ser necesarios para que coincidan con la sshdconfiguración del host remoto.

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

ssh -p port_number remote_host

Nota: Cambiar el puerto SSH es una forma razonable de proporcionar seguridad mediante la opacidad . Si permite conexiones SSH a una implementación de servidor ampliamente conocida en el puerto 22de forma normal y tiene habilitada la autenticación con contraseña, es probable que sufra numerosos intentos de inicio de sesión automatizados. Usar exclusivamente la autenticación basada en clave y ejecutar SSH en un puerto no estándar no es la solución de seguridad más compleja, pero debería minimizarlos.

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

ssh remote_host command_to_run

Se conectará a la máquina remota, se autenticará y se ejecutará el comando.

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

ssh -X remote_host

Si tiene las herramientas adecuadas en su computadora, los programas GUI que use en el sistema remoto ahora abrirán su ventana en su sistema local.

Deshabilitar la autenticación de contraseña

Si ha creado claves SSH, puede mejorar 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 será mediante la clave privada que coincide con la clave pública que haya instalado.

Advertencia: Antes de continuar con este paso, asegúrese de haber instalado una clave pública en su servidor. De lo contrario, se bloqueará su acceso.

Como root o usuario con privilegios sudo, abra el sshdarchivo de configuración:

sudo nano /etc/ssh/sshd_config

Localice la línea que dice Password Authenticationy descomentela eliminando el #. Luego puede cambiar su valor a no: /etc/ssh/sshd_config

PasswordAuthentication no

Dos configuraciones más que no deberían necesitar modificarse (siempre que no haya modificado este archivo previamente) son PubkeyAuthenticationy ChallengeResponseAuthentication. Están configuradas por defecto y deberían tener el siguiente formato: /etc/ssh/sshd_config

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 debe estar deshabilitada y su servidor debe ser accesible solo a través de la autenticación de clave SSH.

Conclusión

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

A continuación, es posible que desee obtener información sobre cómo trabajar con SFTP para realizar transferencias de archivos mediante la línea de comandos.

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post