Una vez realizada la configuración inicial de nuestro servidor:
- Cambio de contraseña del usuario root
- Desactivación del acceso del usuario root
- Creación de un usuario sudo para acceso al servidor
- Activación y configuración de un cortafuegos
- Activación y configuración de un bloqueador de accesos
Es el momento de dar un paso más en la seguridad e implementar el acceso mediante claves público privadas y desactivar definitivamente el acceso por usuarios y contraseñas
1.- Generamos las claves público-privadas
ssh-keygen -b 4096
# Generating public/private rsa key pair
# Enter file in which to save the key (/home/user/.ssh/id_rsa):
# Enter passphrase (empty for no passphrase): añadimos una contraseña
# Enter same passphrase again:
# Your identification has been saved in /home/user/.ssh/id_rsa
# Your public key has been saved in /home/user/.ssh/id_rsa.pub
Verificamos que el contenido de los archivos de clave pública (* .pub) empiezan por ‘ssh-rsa’:
cat ~/.ssh/id_rsa.pub
Cambiamos el nombre de los archivos de claves:
mv id_rsa miservidor
mv id_rsa.pub miservidor.pub
2.- Creamos la carpeta .ssh
en el VPS con permisos 700 y dentro de ella el archivo authorized_keys
con permisos 600:
cd /home/micarpeta
mkdir .ssh
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
3.- Copiamos la clave pública en el servidor VPS
Podemos realizar este proceso manualmente, iniciando sesión en el servidor y copiando y pegando la clave pública en el archivo ‘authorized_keys’ (cada clave pública deberá ser una línea diferente de ese archivo)
sudo nano /home/micarpeta/.ssh/authorized_keys
4.- Comprobamos en otro terminal que funciona la autenticación en el servidor con claves SSH
ssh miservidor@ip_vps -p XXXX
Se solicitará que la introduzcamos la contraseña de la clave pero ya no se solicitará la contraseña del usuario sudo
5.- Iniciamos sesión en el VPS con claves SSH y modificamos el archivo sshd_config
para desactivar el acceso mediante contraseñas
sudo nano /etc/ssh/sshd_config
PasswordAuthentication no
AllowUsers usuario1 usuario2
sudo service sshd restart
6.- Podemos organizar múltiples conexiones utilizando el archivo de configuración ~/.ssh/config
en nuestros equipos locales:
Host nombre_conexion
IdentitiesOnly yes
IdentityFile ~/.ssh/nombre_archivo_clave_privada
Hostname IP_DEL_VPS
User nombre_usuario
Port XX
# Ejemplo conexiones:
Host elrocho# VPS en Contabo
IdentitiesOnly yes
IdentityFile ~/.ssh/elrocho
Hostname 72.112.138.223
User rocho
Port 2244
Host domotica # Domótica El Rocho Red Local
IdentitiesOnly yes
IdentityFile ~/.ssh/domotica
Hostname 10.0.4.51
User domo
Port 224