En este breve tutorial explico como crear y configurar claves SSH desde Linux y Windows y su posterior configuración en VSCODE.
Qué son las clave SSH
Antes de empezar a crear las claves, debemos saber que una clave SSH se compone de dos claves, una de ellas es pública y la otra privada. La clave pública es la que copiaremos al servidor que queremos conectar.
Lo que debemos saber de este algoritmo de encriptación es que consta de 3 fases. Si necesitas más información puedes seguir este enlace:
- La generación de claves.
- La encriptación.
- La desencriptación.
Generación de Claves
Empezamos con la generación de claves en nuestra máquina local (el cliente). Para Generar las claves usamos el comando ssh-keygen
, que es común tanto para Linux como para Windows. A continuación se nos indica el directorio donde deseamos que se generen la claves.
Por defecto ssh-keygen
genera un par de claves RSA (Rivest, Shamir y Adleman) de 2048 bits. También nos pedirá una clave y confirmación para aportar más seguridad.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
> ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (C:\Users\user/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in C:\Users\user/.ssh/id_rsa. Your public key has been saved in C:\Users\user/.ssh/id_rsa.pub. The key fingerprint is: SHA256:KfznebbBStsES5RwbgYxeSA+VDdJDy3+bzRFGdn6Vxc jose@DESKTOP-XXXXXX The key's randomart image is: +---[RSA 2048]----+ | o.B=* o | | o ..B+=+ .E | | o o*+.o .| | . . =+ o o| | o S oo . o| | o . ++ . .| | . + ++ . | | + *o.o | | =ooo | +----[SHA256]-----+ |
Se nos tiene que haber creado dos ficheros: id_rsa y id_rsa.pub, donde id_rsa.pub
es la clave pública que debemos copiar al servidor donde deseamos conectar.
Opcionalmente también podremos indicar el numero de bits:
1 |
$ ssh-keygen -t rsa -b 4096 -C "Ubuntu Server 19.04" |
Copiar las claves desde Linux
Lo siguiente que tenemos que hacer es copiar la clave pública que acabamos de generar al servidor que queremos conectar y para ello usaremos el comando ssh-copy-id
. Para ello tan sólo tenemos que incluir la ruta donde tenemos la clave RSA, nombre de usuario e IP del servidor donde se copiarán.
1 2 3 4 5 6 7 8 9 10 |
$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub wp_test@192.168.0.151 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/c/Users/user/.ssh/id_rsa.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys wp_test@192.168.0.151's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'wp_test@192.168.0.151'" and check to make sure that only the key(s) you wanted were added. |
Si ahora intentamos conectar a la maquina … nos pedirá la clave de seguridad que asignamos para aportar más seguridad.
1 2 3 |
$ ssh test_user@192.168.0.151 Enter passphrase for key '/c/Users/user/.ssh/id_rsa': Welcome to Ubuntu 19.04 (GNU/Linux 5.0.0-25-generic x86_64) |
Copiar las claves desde Windows
Como para Windows no disponemos del comando ssh-copy-id
, vamos a utilizar el comando scp
(secure copy). El comando SCP no crea directorios por lo que primero tenemos que crearlo, ya sea conectando al ftp o a través de Shell.
1 2 3 |
> scp C:\Users\user\.ssh\id_rsa.pub artegrafico.net@xxx.xxx.xxx.xxx:.ssh/authorized_keys artegrafico.net@xxx.xxx.xxx.xxx's password: id_rsa.pub 100% 403 11.2KB/s 00:00 |
Conectar al servidor
Ya podemos intentar conectar a la máquina, y este nos tiene que pedir la clave de seguridad que asignamos anteriormente.
1 2 |
> ssh artegrafico.net@xxx.xxx.xxx.xxx Enter passphrase for key 'C:\Users\user/.ssh/id_rsa': |
Configuración de Claves en VSCODE
Para ello vamos a usar la extensión sftp
de liximomo que ya he explicado como usarla en este post. Para ello tendremos que usar los siguientes atributos: «privateKeyPath» y «passphrase»
En el fichero .sftp.json donde configuramos las opciones de conexión debemos incluir lo siguiente:
1 2 3 4 5 6 7 8 9 10 |
{ "protocol": "sftp", "host": "tudominio.com", "port": 22, "username": "tudominio.com", "remotePath": "httpdocs/", "uploadOnSave": true, "privateKeyPath": "C:\\Users\\user\\.ssh\\id_rsa", "passphrase": "nuestra clave adicional rsa" } |