linux

Autenticación desde Windows a Ubuntu Server con PuTTY y claves SSH

Para loguearnos en un servidor con Ubuntu Server no se recomienda usar el acceso por usuario y contraseña; sino por claves públicas y privadas. De esta manera, no se necesita poner la contraseña, sino simplemente proporcionar un archivo con la clave privada.

En este tutorial vamos a ver cómo crear un par de claves con PuTTYgen, agregarlas a nuestro servidor en el archivo authorized_keys y finalmente loguearnos a través de PuTTY.

Todo esto es para que al final podamos usar SSH para conectarnos a un servidor de Linux desde Windows.

Nota: esto conecta desde Windows a Ubuntu. Si quieres, en cambio, conectarte desde Ubuntu a otra máquina con Ubuntu aquí está el tutorial.

Requisitos

Debes saber la IP o host completo de tu servidor, así como los comandos básicos de Linux.

Nota sobre seguridad

Nunca compartas capturas de pantalla, imágenes o cosas que muestren tus claves. Aunque se supone que la pública es pública por algo, igualmente recomiendo no compartirla.

Recuerda guardar en un lugar seguro estas claves, pues si las pierdes no podrás autenticarte (tendrás que usar usuario y contraseña) y si un atacante te la roba podrá acceder fácilmente.

En este tutorial muestro claves privadas y públicas, pero no las estoy usando en ningún lado más que para pruebas locales.

Obtener PuTTY y PuTTYgen

Descargamos el instalador o las herramientas por separado desde esta página oficial. Debemos tener a PuTTY y a PuTTYgen como ejecutables, es decir, como un .exe.

Para ello puedes buscar en Windows (en la barra de búsqueda) y deben salir los resultados, o si descargaste los archivos por separado entonces ejecuta cada exe según sea requerido.

Paso 1: generar par de claves

Abrimos PuTTYgen (dejamos las opciones intactas, como se ven en la captura) y hacemos click en Generate. Nos pedirá mover el puntero sobre el rectángulo, todo esto para generar algo aleatorio.

Generando clave con PuTTYgen

Cuando termine, mostrará el par de claves generadas en una ventana como esta:

Par de claves generadas con PuTTYgen

Eso generó dos claves, una pública y una privada. Hacemos click en Save public key para guardar la pública, y en Save private key para guardar la privada.

Si pregunta si deseamos guardarla sin una passphrase, indicamos que sí. O igualmente puedes poner a una de las mismas para agregar una protección extra. En mi caso no lo haré.

La extensión de la clave pública no debería importar, y la de la privada es normalmente una con extensión .ppk

Arriba está también una clave que comienza con ssh-rsa, haz click derecho sobre ella para Seleccionar todo el texto, luego, cópialo y/o guárdalo en un lugar seguro.

En mi caso he guardado la clave privada y pública en mi disco, y el texto de hasta arriba que debemos copiar es el siguiente:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAqpuLntjiUDlA93oRsAN6/x0W8CEsng3IzvSz3/HXowWSSWsHb9SR7zO+sLDwjDRwRg2zpk9JmtdVuWzvJjHmlFtGNBDTHNgANPqPiV4HWY2WNZbRS0RXAhcTygVP5z4usrAkWnNp6BvCqYysClX/2KcnyktJlh9Ihl9WvnIFOJPfbhx4czQl/6HCuWpwGhZRqKBojH/hbwfpu7UapmIU2hl0q2nAvCHTamMmDFdayYE8NwTPyO8gBLNKPTi6slKyCsxirHy6Izdd0geo6G8XWo0S/y0zAxqlE98NpUkIRO6xiHxE14J4W+assYL9o7UF/jhGuRKGVlQdsSE5YB4bJQ== rsa-key-20190108

Recuerda que en tu caso cambiará.

Paso 2: agregar clave al servidor de Linux

Ya tenemos nuestras claves, ahora le diremos a Linux que acepte conexiones con nuestra clave pública. Para ello, debemos añadir el texto que copiamos a un archivo llamado authorized_keys que reside en ~/.ssh dependiendo de nuestro usuario.

Por ejemplo, si nuestro usuario es maria_jose, nuestro directorio de trabajo es /home/maria_jose, y por lo tanto, ~ apunta a ese directorio.

En caso de ser root, nuestro directorio ~ es /root. El punto es que debemos crear la carpeta .ssh en nuestro directorio de trabajo, y dentro de esa carpeta, el archivo authorized_keys.

Para crearlo, hacemos esto:

mkdir ~/.ssh
chmod 0700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 0644 ~/.ssh/authorized_keys

Eso se encargará de darle permisos a los archivos, así como de crear a los mismos si no existen. Una vez que ya esté creado, lo vamos a editar con nano así:

nano ~/.ssh/authorized_keys

Dentro de él vamos a pegar la clave que copiamos anteriormente, no las que guardamos como archivos, sino la clave que copiamos. El archivo debe verse así:

Modificar archivo authorized_keys

No se ve toda la clave, pero no importa mientras esté pegada completamente. Después guardamos cambios con CTRL + O, presionamos Enter y luego CTRL + X para salir.

Con eso hemos terminado de configurar el servidor. Ahora vamos a autenticarnos sin contraseña.

Paso 3: configurar PuTTY con host, usuario y claves

Es momento de abrir PuTTY y configurar algunas cosas. Al abrirlo, ponemos en la siguiente ventana el host y puerto, que normalmente es el 22:

PuTTY paso 1

Recuerda que el host es el host de tu servidor, o la IP. Ahora vamos a configurar el usuario con el que nos vamos a conectar por defecto, así no tenemos que escribirlo cada vez. Para ello, navegamos a Connection > Data y en Auto-login username escribimos el nombre de usuario de Linux.

PuTTY paso 2, proporcionar usuario que se loguea

Nota: por ejemplo, si pegaste el contenido de la clave pública en el directorio de trabajo de maria_jose (y entonces estabas logueado como maria_jose) entonces pon, de nuevo, maria_jose para loguearte con ese usuario. Si fuera otro usuario, primero deberías añadirlo a su directorio de trabajo con el proceso de arriba.

Ahora viene el paso más importante, expandimos la sección de SSH, hacemos click en Auth y en donde dice que proporcionemos la clave privada, seleccionamos el archivo de la clave privada haciendo click en Browse (es la que guardamos anteriormente, no es la que copiamos, es la que tiene extensión ppk):

PuTTY paso 3, agregar clave privada

Nota: aunque en mi caso el espacio a la izquierda de donde dice Browse está vacío, en el tuyo debería tener la ruta de la clave.

Ahora vamos a guardar todo lo que configuramos. Para ello, volvemos a la sección Session y le ponemos un nombre a la misma, luego hacemos click en Save:

PuTTY paso 4, guardar sesión y configuraciones

De esta manera, la próxima vez que intentemos loguearnos bastarán un par de clicks.

Paso 4: conectarnos con PuTTY desde Windows a Linux, con SSH

Ahora sí bastará dar doble click en la sesión que guardamos anteriormente (también se puede seleccionar y hacer click en Open):

Acceso desde SSH a servidor Linux con clave privada

Lo importante es que en la parte de arriba aparece que nos estamos autenticando con el usuario que configuramos en PuTTY, usando la clave privada elegida anteriormente.

De esta manera no pide ninguna contraseña.

Siguientes pasos

Opcionalmente puedes desactivar el login por usuario y contraseña a través de SSH. Es decir, que ya nadie pueda entrar con usuario y contraseña, sino únicamente por claves privadas. La desventaja de esto es que si pierdes las claves, nunca podrás entrar.

En caso de que lo desees así, edita el archivo /etc/ssh/sshd_config con:

sudo nano /etc/ssh/sshd_config

En él, busca la línea que dice PasswordAuthentication:

Cambiar password authentication

Para que quede así:

PasswordAuthentication no

Igualmente con una que dice usePAM, debe quedar así:

usePAM no

Usepam ssh

Guarda cambios con CTRL + O, presiona Enter y luego CTRL + X.

Para aplicar los cambios, ejecuta finalmente:

sudo systemcl restart ssh

O en versiones anteriores:

sudo reload ssh

También funciona con:

sudo service ssh reload

Y con eso hemos terminado.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

1 semana hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

2 semanas hace

Esta web usa cookies.