Hola amigos. Cuando tenemos que trabajar con un servidor remoto de linux, podemos conectarnos mediante varias herramientas de software. En esta ocasión usaremos powershell para crear una llave ssh en windows.
¿Qué es ssh y una llave ssh?
SSH es el protocolo para conectar a la consola de linux. También nos permite conectarnos a la consola de otros sistemas operativos (por ejemplo freebsd) y equipos de red administrables (switch, router, firewall, etc).
Las llaves ssh se ven como archivos con letras y números aleatorios, hay que pensar en ellas como en contraseñas largas y por lo tanto más seguras.
La llave (key en inglés), una vez creada, permite acceder a un servidor de linux sin ingresar las credenciales. Se genera en el cliente de windows, y se divide en dos partes. Una parte privada, que permanece protegida en nuestra pc siempre, y una pública que debe ser copiada en el servidor de destino.
Crear una llave ssh en windows
En nuestra pc con Windows, clic derecho en el menú de inicio y clic en Ejecutar. Tipeamos el comando powershell, nos abre la ventana de comandos azul y ejecutamos el comando ssh-keygen. Apretamos enter varias veces hasta que nos da un ascii art al final de la ejecución. Nos genera en nuestra carpeta de usuario %USERPROFILE%\.ssh\ dos archivos. id_rsa e id_rsa.pub
PS C:\Users\fheymann> ssh-keygen -b 4096 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\fheymann/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\fheymann/.ssh/id_rsa.
Your public key has been saved in C:\Users\fheymann/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:V0oTm6ohhlS/QS8xIYg7MJ/ygTgp4hBQffuLO3ameDY fheymann@W10TEST
The key's randomart image is:
+---[RSA 4096]----+
|oo.oo =. . |
|= ...+.+ + |
|oB.. .+.. = . |
|%.+. .+ o + |
|==..o o.S o |
| ... . o.. |
| .. . |
| .E + |
| .+oB |
+----[SHA256]-----+
Argumentos usados en el comando:
-b es la cantidad de bits que le asignamos a nuestra llave, cuanto más grande es resulta más segura. Pero también se tarda más tiempo en procesar el acceso.
-t es el cifrado que se utiliza para generar la clave, rsa es muy conocido y compatible con varios sistemas.
Configuramos linux para nuestra llave ssh
Nos conectamos al linux con el comando ssh y las credenciales correctas de ese servidor.
PS C:\Users\fheymann> ssh fheymann@192.168.0.100 -p 22
fheymann@192.168.0.100's password:
Linux LINUXTEST 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Jun 7 17:03:26 2024 from 192.168.0.10
$
-p es un argumento que indica el puerto de conexión. En forma predeterminada se usa el puerto 22, pero varios administradores lo cambian dentro de la config de linux, para protegerlo de ataques de red.
Creamos una carpeta .ssh, un archivo authorized_keys y le damos los permisos de acceso correctos con chmod, luego salimos del linux.
$ mkdir .ssh
$ touch .ssh/authorized_keys
$ chmod 700 .ssh/
$ chmod 644 .ssh/authorized_keys
$ exit
cerrar sesión
Connection to 192.168.0.100 closed.
Desde windows, copiamos nuestra llave ssh
Copiamos el contenido de nuestra llave ssh con este comando y ponemos la clave del usuario de linux:
PS C:\Users\fheymann> type .\.ssh\id_rsa.pub | ssh fheymann@192.168.0.100 -p 22 "cat >> .ssh/authorized_keys"
fheymann@192.168.0.100's password:
PS C:\Users\fheymann>
Probamos la conexión ssh, y no debería pedirnos la contraseña.
ssh fheymann@192.168.0.100 -p 22
En el siguiente post explicaré como conectar de windows a linux, usando VISUAL STUDIO CODE usando lo que aprendimos acá.
Saludos.
🏷️ #llave_ssh #powershell #servidor_linux #ssh #ssh_key #windows