Tutorial

Cómo usar SSH para conectarse a un servidor remoto

Published on December 2, 2020
Español
Cómo usar SSH para conectarse a un servidor remoto

Introducción

SSH es una herramienta esencial para ser un administrador de sistemas experto.

SSH, o Secure Shell, es un protocolo que se utiliza para iniciar sesión de forma segura en 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 conectarse a un sistema remoto mediante SSH, usaremos el comando ssh. El formato más básico del comando es:

  1. ssh remote_host

En este ejemplo, remote_host es la dirección IP o el nombre de dominio al que está tratando de conectarse.

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

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

  1. ssh remote_username@remote_host

Cuando se haya conectado al servidor, se le puede solicitar que verifique su identidad mediante el ingreso de una contraseña. Más adelante, cubriremos cómo generar claves para usar en vez de contraseñas.

Para salir de la sesión de ssh y volver a la sesión de shell local, escriba lo siguiente:

  1. exit

¿Cómo funciona SSH?

SSH funciona mediante la conexión de un programa cliente a un servidor ssh, llamado sshd.

En la sección anterior, ssh era el programa cliente. El servidor ssh ya está en ejecución en el remote_host que se especificó.

En su servidor, el servidor sshd ya debe estar en ejecución. Si no es así, es posible que deba acceder a su servidor mediante una consola basada en la web o una consola serie local.

El proceso que debe iniciar un servidor ssh depende de la distribución de Linux que esté utilizando.

En Ubuntu, para iniciar el servidor ssh, debe escribir lo siguiente:

  1. sudo systemctl start ssh

Eso debería iniciar el servidor sshd y, luego, puede iniciar sesión de forma remota.

Cómo configurar SSH

Cuando cambie la configuración de SSH, cambiará la configuración del servidor sshd.

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

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

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

Ábralo con un editor de texto:

  1. sudo nano /etc/ssh/sshd_config

Tendrá que dejar la mayoría de las opciones de este archivo sin modificar. Sin embargo, es posible que desee echar un vistazo a algunas:

/etc/ssh/sshd_config
Port 22

La declaración de puerto especifica en qué puerto se escuchará el servidor sshd para las conexiones. De forma predeterminada, es el 22. Es recomendable dejar esta configuración sin modificar, a menos que tenga razones específicas para hacerlo. Si efectivamente cambia de puerto, le mostraremos cómo conectarse al puerto nuevo 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 claves de host especifican dónde buscar claves de host globales. Analizaremos qué es una clave de host más adelante.

/etc/ssh/sshd_config
SyslogFacility AUTH
LogLevel INFO

Estos dos elementos indican el nivel de registro que debería ocurrir.

Si tiene dificultades con SSH, incrementar la cantidad de registros puede ser una buena forma 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.

LoginGraceTime especifica cuántos segundos se mantendrá la conexión activa sin iniciar sesión correctamente.

Una buena idea puede ser establecer este tiempo en un valor un poco mayor que la cantidad de tiempo que le toma iniciar sesión normalmente.

PermitRootLogin selecciona si se permite que el usuario root inicie sesión.

En la mayoría de los casos, esto debería modificarse a no cuando haya creado una cuenta de usuario que tenga acceso a mayores privilegios (a través de su o sudo) y que pueda iniciar sesión a través de ssh.

strictModes es un protector de la seguridad que denegará un intento de inicio de sesión si cualquiera puede leer los archivos de autenticación.

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 capacidad llamada Reenvío X11. Esto le permite ver en el sistema local la interfaz gráfica de usuario (GUI) del sistema remoto.

Esta opción debe habilitarse en el servidor y asignarse con el cliente SSH durante la conexión con la opción -X.

Tras realizar los cambios, guarde y cierre el archivo mediante CTRL+X e Y, seguido de INTRO.

Si modificó alguna configuración en /etc/ssh/sshd_config, asegúrese de volver a cargar el servidor sshd para implementar los cambios.

  1. sudo systemctl reload ssh

Debería probar completamente los cambios para garantizar que funcionan de la forma en que se espera.

Una buena idea puede ser tener algunas sesiones activas cuando realice cambios. Esto le permitirá revertir la configuración si es necesario.

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 mucho mejor configurar una autenticación basada en claves.

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

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 se encuentra en el equipo cliente y se protege y mantiene en secreto.

La clave pública puede entregarse a alguien o colocarse en cualquier servidor al que desee acceder.

Cuando intente conectarse usando un par de claves, el servidor usará la clave pública para crear un mensaje para el equipo cliente que solo puede leerse con la clave privada.

Luego, el equipo cliente envía la respuesta apropiada al servidor y así el servidor sabrá que el cliente es legítimo.

El proceso completo se realiza automáticamente después de configurar las claves.

Cómo crear claves SSH

Las claves SSH deben generarse en el equipo desde el que desea iniciar sesión. Generalmente, es su equipo local.

Ingrese lo siguiente en la línea de comandos:

  1. ssh-keygen -t rsa

Presione Intro para aceptar los valores predeterminados. Sus claves se crearán en ~/.ssh/id_rsa.pub y ~/.ssh/id_rsa.

Cambie al directorio .ssh escribiendo lo siguiente:

  1. cd ~/.ssh

Vea los permisos de los archivos:

  1. 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, solo el propietario puede leer el archivo id_rsa y escribir en él. Así es como debería ser mantenerlo en secreto.

Sin embargo, el archivo id_rsa.pub puede compartirse y tiene permisos apropiados para esta actividad.

Cómo transferir su clave pública al servidor

Si actualmente tiene acceso con contraseña a un servidor, puede copiar su clave pública en él mediante la emisión de este comando:

  1. ssh-copy-id remote_host

Con esto se iniciará una sesión SSH. Después de ingresar su contraseña, su clave pública se copiará en el archivo de claves autorizadas del servidor, lo que le permitirá iniciar sesión sin la contraseña la próxima vez.

Opciones del lado del cliente

Hay varios indicadores opcionales que puede seleccionar cuando se conecta mediante SSH.

Algunos de ellos pueden ser necesarios para que la configuración coincida con la del sshd del host remoto.

Por ejemplo, si cambió el número de puerto en su configuración de sshd, también deberá cambiarlo en el lado del cliente para que coincida escribiendo lo siguiente:

  1. ssh -p port_number remote_host

Si solo desea ejecutar un comando único en un sistema remoto, puede especificarlo después del host como este:

  1. ssh remote_host command_to_run

Se conectará al equipo remoto, se autenticará y se ejecutará el comando.

Como dijimos antes, si el reenvío X11 se habilita en ambas computadoras, puede acceder a esa funcionalidad escribiendo lo siguiente:

  1. ssh -X remote_host

Siempre que tenga las herramientas apropiadas en su computadora, los programas de GUI que utiliza en el sistema remoto ahora abrirán su ventana en el sistema local.

Cómo deshabilitar la autenticación mediante contraseña

Si creó claves SSH, puede mejorar la seguridad de su servidor deshabilitando la autenticación únicamente mediante contraseña. Aparte de la consola, la única forma de iniciar sesión en su servidor será mediante la clave privada que se empareja con la clave pública que se haya instalado en el servidor.

Advertencia: Antes de continuar con este paso, asegúrese de haber instalado una clave pública en su servidor. Si no es así, quedará bloqueado.

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

  1. sudo nano /etc/ssh/sshd_config

Busque la línea que dice Password Authentication y quite el comentario en ella eliminando el # inicial. Luego, puede cambiar su valor a no:

/etc/ssh/sshd_config
PasswordAuthentication no

Dos parámetros adicionales que no deben modificarse (siempre que no haya modificado este archivo antes) son PubkeyAuthentication y PubkeyAuthentication. Están configurados de forma predeterminada y deben mostrar lo siguiente:

/etc/ssh/sshd_config
PubkeyAuthentication yes
ChallengeResponseAuthentication no

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

Ahora puede volver a cargar el demonio SSH:

  1. sudo systemctl reload ssh

Ahora, la autenticación mediante contraseña debería deshabilitarse y solo debe poder acceder a su servidor mediante la autenticación de claves SSH.

Conclusión

Aprender cómo usar SSH es un proceso que vale la pena, aunque solo sea una actividad común.

A medida que utilice las diversas opciones, descubrirá funciones más avanzadas que pueden facilitarle la vida. SSH ha mantenido su popularidad porque es seguro, ligero y útil en diversas situaciones.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about us


About the authors

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
1 Comments


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Hello!

I make a mistake configuring my ssh access to my linux server, I ckeck the No Authorize access for password and I save de changes, but i did not complete de process and now i can not access to my server…

What can i do for???

There is any way to solve that without reset the server?

/////////////////////// ESPAÑOL /////////

Hola buenas tardes!

Cometi un error al configurar el acceso via ssh en ubuntu en mi servidor y marque la opcion de no permitir el acceso por contraseña y guarde los cambios, pero creo que no culmine el proceso de configuracion respectivo y ahora no puedo ingresar ni con el usuario root, ni con el otro usuario.

Hay alguna forma de reparar ese error sin tener que reiniciar el servidor desde cero?

Gracias!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel