DigitalOcean tiene un artículo muy completo
https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-based-authentication-on-a-linux-server
En resumen, el la PC hacia la que se realiza la conexión:
* Si no hay un servidor ssh
sudo apt install openssh-server
* verificar que esté corriendo
sudo systemctl status ssh
* verificar que no esté el firewall al medio
sudo ufw status
* si estuviera activo ufw
sudo ufw allow ssh
* crear las claves
ssh-keygen
sin passphrase
===== ahora sucede la magia =====
* Desde la PC que se usa para conectar hacia el host remoto, copiar la clave pública al otro host. Por ejemplo, desde mi PC del trabajo y para conectar al server01, usaría ''ssh-copy-id username@server01''
ssh-copy-id username@remote_host
===== Desde Powershell =====
En PowerShell puedes lograr algo similar al comando `ssh-copy-id` para agregar tu laptop con Windows 10 a la lista de hosts que pueden conectarse con claves SSH en tu servidor Linux.
Puedes hacerlo manualmente copiando la clave pública desde tu laptop a tu servidor Linux. Aquí hay una manera de hacerlo en PowerShell:
- Primero, asegúrate de tener una clave SSH generada en tu laptop. Si no la tienes, puedes generarla con el comando `ssh-keygen` (sin passphrase).
- Luego, necesitas copiar el contenido de tu clave pública (`id_rsa.pub`) en tu servidor Linux. Puedes hacerlo con PowerShell utilizando algo como esto:
cat ~/.ssh/id_rsa.pub | ssh user@server01 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Esto copiará el contenido de tu clave pública desde tu laptop al archivo `authorized_keys` en el directorio `.ssh` en tu servidor Linux.
Solo asegúrate de reemplazar `user@server01` con tu usuario y la dirección del servidor Linux.