Qué hacer tras perder acceso SSH en un servidor Ubuntu alojado en Digital Ocean

Es posible (y ocurre a menudo) que olvidemos las credenciales de autenticación de nuestras máquinas virtuales o que incluso, como es mi caso, se nos estropée el único ordenador con el cuál tenemos acceso SSH a nuestro.

Los pasos para recuperarnos de esta situación son los siguientes:

  1. Obtener acceso 'físico' a nuestro servidor
  2. Resetear credenciales SSH en Digital Ocean
  3. Resetear credenciales del servidor
  4. Comprobar permisos SSH

Obtener acceso 'físico' a nuestro servidor

En primer lugar debemos acceder a través de Digital Ocean a nuestro droplet. Para ello:

  1. Acceder a nuestra cuenta de Digital Ocean
  2. Acceder al Droplet cuyo acceso queremos recuperar
  3. Acceder a la sección Access (https://cloud.digitalocean.com/droplets/**dropletId**/access)
  4. Iniciar la consola

Resetear credenciales SSH en Digital Ocean

Abre una nueva ventana en tu navegador y ve a la sección de seguridad dentro de tu cuenta de Digital Ocean: https://cloud.digitalocean.com/account/security

En el apartado SSH keys, asegúrate de que tienes acceso a todos los dispositivos cuyas claves aparecen listadas. Elimina las claves que ya no necesites.

A continuación, añade las claves SSH de la máquina desde la que te conectarás via SSH a tu Droplet.

Resetear credenciales del servidor

Con la consola de Digital Ocean abierta, vamos a buscar el usuario cuyo acceso has perdido. Ten en cuenta que ahora mismo eres root:

  1. Lista los usuarios del sistema con less /etc/passwd
    Esto devolverá una lista como:

    sync:x:4:65534:sync:/bin:/bin/sync
    games:x:5:60:games:/usr/games:/usr/sbin/nologin
    man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
    lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
    mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
    news:x:9:9:news:/var/spool/news:/usr/sbin/nologin

    La mayoría de las entradas son usuarios del sistema. Busca el nombre del usuario cuyo acceso quieres recuperar por SSH.

  2. Resetea la contraseña del usuario con passwd username

  3. Habilita el acceso con contraseña via SSH al servidor desde tu ordenador local

    • En la consola de Digital Ocean:
      1. nano /etc/ssh/sshd_config
      2. Edita PermitRootLogin no
      3. Edita PasswordAuthentication yes
      4. Guarda cambios
      5. systemctl restart ssh
    • En la consola de tu ordenador local:
      1. ssh-copy-id [email protected]
      2. Prueba a conectarte con ssh [email protected]
    • En la consola de Digital Ocean:
      1. nano /etc/ssh/sshd_config
      2. Edita PasswordAuthentication no
      3. systemctl restart ssh

Comprobar permisos SSH

Antes de terminar, asegúrate de que en tu Droplet:

  1. Configuración del archivo sshd_config
    • PermitRootLogin no (ssh [email protected] debería devolver Permission denied (publickey).)
    • PasswordAuthentication no

Autor: Ernesto

Full Stack Software Engineer. Web and Machine Learning development with Javascript and Python ☕. Spain Vietnam Poland.

Deja un comentario

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.