Hoy os vamos a explicar como generar una clave de acceso SSH para poder acceder a un VPS de OVH. Esta combinación de clave pública y privada sustituye al acceso con contraseña.
De esta forma podemos evitar ataques de fuerza bruta contra el usuario root que suele estar siempre activado en los servidores Linux. Si accedes a tu VPS por la línea de comando y al acceder encuentras algo como esto:
Last failed login: Fri Apr 27 19:25:51 CEST 2018 from farben-stracke.de on ssh:notty There were 2263 failed login attempts since the last successful login.
te recomendamos aplicar este post.
¿Qué es la autenticación con clave pública y privada?
«La autenticación con clave pública para conectarse a un servidor remoto usando el protocolo SSH funciona con dos claves: una pública y otra privada. Para entender el funcionamiento se suele recurrir a la metáfora del candado y la llave. La clave pública funciona como un candado y la privada como la llave. El candado se colocará en el servidor remoto al que se quiere acceder; cuando se intenta acceder se comprobará que la máquina que intenta conectar tiene la llave, la clave privada».
Para configurar el acceso SSH con clave pública hay que:
- Generar el par de claves pública/privada.
- Copiar la clave pública al servidor.
- Deshabilitar el acceso al servidor con contraseña.
Creando la clave pública y privada con PuTTY en Windows
El par de claves pública/privada en un ordenador Windows la creamos con PUTTY y el generador de claves que lleva: PUTTYGEN.
Simplemente ejecutamos el PuTTY Key Generator, seleccionamos RSA y un mínimo de 2048 bits para la llave generada. Una vez seleccionado movemos el cursor del ratón por la ventana del generador hasta que genere la clave.
Esa la llave que aparece en «Public key por pasting into OpenSSH authorized_keys file» (1).
Luego podemos poner un comentario para identificar la clave y finalmente una contraseña para proteger el acceso a la clave privada (2).
Nosotros siempre recomendamos añadir una contraseña para proteger el uso de la clave privada «Key passphrase». Nos añade un nivel de seguridad adicional que pensamos que es imprescindible.
Guardamos tanto la clave pública (el candado) como la clave privada (la llave), haciendo clic sobre «Save public key» (3) y «Save private key» (4). La clave pública es la que hay que copiar al servidor dentro del archivo: ~/.ssh/authorized_keys del VPS.
La llave privada es la que tenemos que tener guardada en el ordenador para que PuTTY para usarla al acceder al servidor remoto. OJO: Si perdemos esta llave, no podremos acceder al VPS por lo que hay que guardarla bien.
Podemos comprobar si la carpeta .ssh existe con:
cd ~ ls -a
El comando ls
por defecto no muestra archivos y carpetas ocultos por lo que hay que añadir el -a
.
Si existe la carpeta no hay que crearla. Si no existe la carpeta .ssh, la creamos antes de copiar, así como el archivo authorized_keys:
cd ~ mkdir .ssh chmod 700 .ssh touch .ssh/authorized_keys chmod 600 .ssh/authorized_keys
Para editar el archivo authorized_keys:
vi ~/.ssh/authorized_keys
Y pegamos la clave pública que hemos generado anteriormente en el archivo (click con el botón derecho del ratón donde queremos pegar la información que tenemos copiada en el portapapeles). Si hubiese otras claves en el archivo, la pegamos en una línea nueva al final.
Hay que tener cuidado que se pegue toda la clave pública; sobre todo hay que vigilar que empiece por ssh-rsa
porque muchas veces al pegarlo se come la primera s
y pega solo sh-rsa
(y con entonces no funcionará el acceso).
Guardamos con ESC + :wq
+ ENTER
Si por alguna de aquellas da un error al guardar podemos salir sin guardar con ESC + :q!
+ ENTER
Deshabilitar el acceso por contraseña
Una vez comprobado que el acceso con la clave pública y privada funciona correctamente. OJO: Solamente después de haberlo comprobado se puede deshabilitar el acceso contrasela.
Esto aumentará la seguridad, pero implica que si se pierde la clave privada se perderá el acceso al servidor: hay que guardar cuidadosamente la clave privada.
La configuración del servidor SSH se puede encontrar en el archivo /etc/ssh/sshd_config
. Para deshabilitar el acceso SSH con contraseña hay que el archivo como root:
vi /etc/ssh/sshd_config
Y añadir la siguiente línea:
PasswordAuthentication no
Y reiniciamos el servidor SSH con:
service sshd restart
Y todo listo.
Configuración de PuTTY para acceder con la clave SSH al VPS
Para configurar el accceso con la clave pública y privada al VPS, en PuTTY hay que configurar lo siguiente:
Lo primero es que hay que añadir en CONNECTION / DATA, el usuario root en el campo «Auto-login username».
Y luego hay que decirle a PuTTY dónde está el archivo con la clave privada en el ordenador.
Y con estos dos ajustes ya podremos acceder con la clave pública + clave privada al VPS. Si hemos configurado una contraseña para el uso de la clave privada, nos la pedirá al conectarnos, sino se conectará sin más.