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.
Cuando termine, mostrará el par de claves generadas en una ventana como esta:
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í:
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:
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.
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):
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:
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):
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:
Para que quede así:
PasswordAuthentication no
Igualmente con una que dice usePAM, debe quedar así:
usePAM no
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.