5 minutos
Conectarse mediante claves SSH desde Windows a Linux
ssh conectarse linux windows putty openssh
924 palabras
sábado, 25 de febrero de 2023 (Ultima actualización: sábado, 25 de febrero de 2023)
dc0540d @ 2023-02-26
Preámbulo
Yendo un poco al grano, en lugar de explicar con detalle las características del par de claves, vamos a ver cómo se generan y se hace uso de ellas. Las conexiones se harán desde un equipo Windows 10 a un servidor Debian 11, y algún que otro matiz.
Lo que está claro y se sabe es que el uso de claves SSH es más seguro que el uso de contraseñas.
Claves SSH
Como se hace una conexión desde un equipo Windows a un servidor Linux, está de la forma que se puede hacer mediante PuTTY o OpenSSH. En ambos casos, se debe tener acceso al servidor, sea por contraseña o por claves, para poder importar la clave pública.
Es importante conocer las diferencias entre clave pública y clave privada y el uso del fichero authorized_keys.
Clave pública: es la clave que se guarda en el servidor y se comparte con el resto de los clientes que se quiera hacer uso del servidor.
Clave privada: es la clave que se guarda en el equipo cliente y que se utiliza para conectarse al servidor. Debe guardarse en un sitio seguro.
autorized_keys: es el fichero que se encuentra en el directorio .ssh del servidor y que contiene las claves públicas de los clientes que se quieran conectar al servidor.
Algoritmmo de cifrado: es el algoritmo que se utiliza para cifrar la comunicación entre el cliente y el servidor. Se hará uso del algoritmo EdDSA.
Generando claves SSH mediante PuTTYgen
En la herramienta PuTTYgen, se debe seleccionar el algoritmo EdDSA, y le damos al botón Generate. Una vez generada la clave, se muestra lo siguiente:
El texto que está seleccionado es la clave pública, se puede establecer una contraseña para la clave privada, eso es opcional, y la clave privada se obtiene pulsando el botón Save private key. Se recomienda guardarlo en un sitio seguro y no compartirlo con nadie.
Para guardar la clave pública en el servidor, ir a la sección de guardar la clave pública.
Ahora falta la clave privada, para ello, con la clave privada que se guardó antes, abrimos PuTTY, seleccionamos la sesión guardada o se crea una.
Pues en el panel derecho, nos vamos hacia la siguiente ruta: Connection/SHH/Auth/Credentials, y en el panel derecho, buscamos la clave privada
Recuerda guardar la sesión antes de dar al botón Open, si no, tendrás que volver a buscar la clave privada.
Abrimos la conexión, introducimos el nombre de usuario, y et-voilà.
Mediante OpenSSH
El procedimiento es similar al uso de PuTTY, pero en este caso la generación de clave se hará por consola de Windows.
En la propia terminal:
Si se generó una clave anteriormente y se hace uso de ella, generar una nueva podría ocasionar la pérdida de acceso al servidor. Tenga precaución.
$ ssh-keygen -t ed25519 -C "correo@mail.com"
La bandera -C
significa comentario, normalmente se pone un correo
electrónico asociada a la persona que hace uso de la clave privada.
Una vez generada las claves, se guardan en el directorio .ssh en la
carpeta del usuario. Al ser ed25519, los ficheros se llaman
id_ed25519
, que es la clave privada e id_ed25519.pub
que es la clave
pública.
Se recomienda cambiarles de nombre para evitar el reemplazo de estas claves al generar otras nuevas.
El contenido del fichero id_ed25519.pub
debe ser copiado al fichero de
authorized_keys.
Para guardar la clave pública en el servidor, ir a la sección de guardar la clave pública.
Mientas que la clave privada se deja donde está, y se procede a editar el fichero config, que se encuentra ubicado en la carpeta .ssh de la carpeta del usuario. En caso de que no exista dicho fichero, crear uno con el mismo nombre y sin extensión.
Host 192.168.1.57
HostName 192.168.1.57
User root
IdentityFile C:\Users\model\.ssh\vm-debian
En el fichero config se debe añadir lo siguiente para hacer uso de la
clave privada, donde Host
y HostName
es la dirección IP del
servidor, User
es el usuario con el que desea entrar e IdentityFile
es el fichero donde está la clave privada.
Guardando la clave pública en el servidor
La clave pública se debe guardarse en el servidor, para ello nos conectamos al servidor y localizamos el archivo authorized_keys dentro del directorio .ssh.
$ cd ~/.ssh
$ touch authorized_keys
Si no existe el directorio .ssh, se puede crear.
$ cd ~
$ mkdir ~/.ssh && cd .ssh
$ touch authorized_keys
Una vez creado el fichero, se añade la clave pública que hemos generado anteriormente al fichero authorized_keys.
$ echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO0EV2+vc2DQABB9T5loDEfqbdsv9DKdGgmBn5YiPqQQ eddsa-key-20230225" >> authorized_keys
Es importante reseñar que el proceso de añadir la clave pública en el fichero authorized_keys se está haciendo sobre el directorio de usaurio root. Si en lugar de iniciar sesión con root, lo prefiere con un usuario estándar se deberá hacer el mismo procedimiento pero en el propio directorio del usuario.
Eliminar el acceso por contraseña
Una vez que ya se pueda iniciar sesión mediante claves SSH, se puede
quitar la posibilidad de acceso por contraseña. Para ello basta con
editar el fichero sshd_config
.
$ nano /etc/ssh/sshd_config
Buscar la línea que pone: PasswordAuthentication
, no debe estar
comentada y cambiar su valor a no
. Guardar y reiniciar con:
service sshd restart
.
Bonus: Conexión por WinSCP mediante claves SSH
Con la clave privada que se generó en PuTTY, añadir en ajustes avanzados en la parte de nueva conexión.
Eso es todo.
Datos técnicos
- Windows: Microsoft Windows [Versión 10.0.19044.2604]
- Debian: Debian GNU/Linux 11.5.0 (bullseye)
- PuTTY: Release 0.78
- OpenSSH en Windows: OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
- OpenSSH en Debian: OpenSSH_8.4p1 Debian-5+deb11u1, OpenSSL 1.1.1n 15 Mar 2022