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.
Para conectarse a un sistema remoto mediante SSH, usaremos el comando ssh
. El formato más básico del comando es:
- 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:
- 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:
- exit
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:
- sudo systemctl start ssh
Eso debería iniciar el servidor sshd y, luego, puede iniciar sesión de forma remota.
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:
- sudo cp /etc/ssh/sshd_config{,.bak}
Ábralo con un editor de texto:
- 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:
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.
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.
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.
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.
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 INTR
O.
Si modificó alguna configuración en /etc/ssh/sshd_config
, asegúrese de volver a cargar el servidor sshd para implementar los cambios.
- 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.
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.
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.
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:
- 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:
- cd ~/.ssh
Vea 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, 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.
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:
- 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.
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:
- 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:
- 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:
- 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.
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
:
- 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
:
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:
PubkeyAuthentication yes
ChallengeResponseAuthentication no
Después de realizar los cambios, guarde y cierre el archivo.
Ahora puede volver a cargar el demonio SSH:
- 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.
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.
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!