El método explicado aquí es muy sencillo, y se basa en el modelo criptográfico de cifrado asimétrico. Consiste, básicamente, en un par de claves que se corresponden unívocamente entre sí, generadas con cierto grado de aleatoriedad, y si se quiere, con una frase secreta que sólo conoce el dueño de las mismas, que permite cifrar las claves con el algoritmo 3DES. La clave pública es, como su nombre indica, de libre utilización por cualquier persona. Cuando alguien quiere encriptar un mensaje que sólo nosotros podamos leer, utilizará nuestra clave pública para hacerlo. Posteriormente, nosotros usaremos nuestra clave privada (que solamente su dueño conoce) para desencriptar ese mensaje. Cualquier cosa encriptada con una lave pública, sólo se podrá desencriptar con su par privada. El proceso inverso, es decir, encriptar usando la clave privada y desencriptar usando la clave pública, se utiliza para las firmas digitales.
1- Instalar openssh (tanto la versión servidor → openssh-server como la versión cliente → openssh-client)
2- Editamos la configuración del “servidor ssh” en /etc/ssh/sshd_config,
Con esto ya podemos conectarnos por ssh con login que nos pedirá su correspondiente contraseña
3- CONEXIÓN REMOTA AL EQUIPO SIN SOLICITUD DE CONTRASEÑA
A→ Equipo que se conecta a B
B← Equipo al que nos conectamos desde A
1º Creamos claves RSA y DSA en el equipo A
ssh-keygen -t rsa -b 1024 → Creará claves rsa de 1024 bits
ssh-keygen -t dsa -b 1024 → Creara claves dsa de 1024 bits
2º En el directorio /root/.ssh tendremos tras ejecutar las órdenes del punto 1º los siguientes archivos
- id_rsa
- id_rsa.pub
- id_dsa
- id_dsa.pub
3º Copiamos los 2 archivos con extensión .pub al equipo B, en el directorio /root/
4º En el equipo B, ejecutamos → cat *.pub >> .ssh/authorized_keys
Esto copiará el contenido de los archivos .pub en un fichero llamado authorized_keys, para ssh el contenido de este fichero serán las claves de los dispositivos autorizados a conectarse a él sin solicitud de contraseña.
5º Borramos los archivos *.pub del Equipo B
6º Ahora cuando conectemos DESDE A a B no nos pedirá contraseña, ya que en B comprobará las authorized_keys y estará la del equipo A en /root/.ssh/ como id_rsa.pub
(NOTA: Si queremos hacerlo desde A con usuario administrador en lugar de root por ejemplo, ese id_rsa.pub debe estar en /home/administrador/.ssh/ [En mi caso tengo cambiado el home y seria en /var/administrador/.ssh/] )
- Si hay problemas con ssh:
Para comprobar si ssh está ejecutándose en el equipo systemctl status ssh.service
Para comprobar que se permita acceder como root hay que mirar el fichero /etc/ssh/sshd_config/ y en la línea PermitRootlogin debe estar en yes para permitir conectar como usuario root.
Para comprobar que se permite el acceso por clave rsa (las que ponemos para que no pida contraseña al conectar por ssh) en /etc/ssh/sshd_config/ debemos tener la línea PubkeyAcceptedKeyTypes +ssh-rsa
Para reiniciar el servicio o ver porque no funciona:
Desde ese equipo:
# systemctl restart sshd.service --> Restaura el servicio ssh del equipo
# nmap -O direccion_ip
...y ver si está abierto el puerto 22.
----------------------------------------------------------------------------------------
OTRA OPCIÓN es:
Estos dos comandos se ejecutan en el servidor del Backup:
ssh-keygen -t ecdsa
ssh-copy-id -i .ssh/id_ecdsa.pub root@<equipo-al-que-quiero accder>
Y luego cuando hagas ssh@root@<;equipo-al-que-quiero acceder>
se debe conectar sin pedir la contraseña.
MÁS INFORMACIÓN EN ESTE ENLACE.