Conectarse remotamente usando llaves publicas y privadas

 

ssh


 

ssh un protocolo de comunicación que encontramos en la capa de aplicación del protocolo de comunicación TCP/IP, ssh nos sirve para establecer conexiones de manera remota y de manera segura entre servidores.

Por lo general cuando usamos ssh siempre a la hora de hacer la conexión del lado del servidor nos preguntara un usuario y un passwd. Así mismo cuando tenemos muchos servidores pues es algo engorroso tener un montón de passwds. en otras ocaciones las políticas de passwd son algo complejas de equis número de caracteres, números, caracteres especiales, mayusculas y minúsculas.

 

Una imagen para medio explicar como funciona el protocolo de comunicación de SSH

 
 

ssh

No se ustedes pero en lo personal no me aprenderia tantisimas contraseñas.

entonces lo que podemos hacer es generar nuestra llave y subirla a los servidores a donde necesitamos ingresar y ya sea que usemos una llave con alguna frase mas sencilla o dejarla sin frase.

Hacemos lo siguiente si mi usuarios es xanatos y quiero ingresar a mi maquina vmclase001 sin tener que usar passwd haremos lo siguiente.

 

ssh-keygen -t rsa -b 4096 -C "bernardo.mejia@gmail.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/xanatos/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/xanatos/.ssh/id_rsa.
Your public key has been saved in /home/xanatos/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Choz61K1xeFpqf6o66AT1LX8I/7I6KXMWnThT4bSV9g bernardo.mejia@gmail.com
The key's randomart image is:
+---[RSA 4096]----+
|                 |
|     .. o        |
|  . o+.= E       |
| . .+oX .        |
|. ++.X.+S        |
|. o*=o=+         |
|.ooo..o..        |
|+o+ *o.          |
|.=BO.+o.         |
+----[SHA256]-----+

como podemos ver ejecutamos el ssh-keygen se genera nuestra llave publica y privada dentro de nuestro home directory y en el subdirectorio .ssh y genera mis archivo id_rsa e id_rsa.pub.

Copiamos nuestra llave pulica al server al archivo authorized_keys

en el server si no existe el archivo lo creamos

touch authorized_keys
vi authorized_keys
 
$ cat authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqF4X5322/2MbloaZAIKXLvfqz7ZxSJYmdYlXluNZqZvPZ7W4qF78/kL7n+N2EUrGR1oPkd0kJaAZuQvJyPiYO2L+GaraS5IRJoWbqbM1yAP0htAhsuSx1Gj+DBe2H8IcANGQ9aG9nmlouykAWcut2bEPdvglOI2hjPi71OJvJbh10AXL4leaBuJbFOkxSqwoH15RAo6kPgcZhhyNkhKcS0qv0FPQ9F46LLuQuAcBfZCOzTYjlfMt418GQaL61LjGIK48l3Tl7Yo1RwJMRZrwWJUvmNsDXmovmkhfcbVVJGXsVR21X22AVq+8l1F9yXUUAKNeqT3BLTrThlGZc0PiLANaqYm60m/okDdy+UT8NCYxy6TCggQxpIsOuQaPfQfWEzNDBf7+dTL9VudECcHyPAHdXEOMnBvRXI/Vk9IKng3j7fILtDsfkkSp8Hd1z50ascpmam7fgInghz1RY/YmhPPqsIUiWkvHM24+o08pbiyrL6BjGldcuBAyRsFzuB573+vldp9i9LQxPjK5FuIUN2bc12w6TatS/VUkMDPyjcFPzENvccdB9aQ3odSw1QLPcIqyGw5S/azE6Ay4kwak6hblBzT1ztIKiI9v873f0CjOmOjYzT4DkBZOmbc7sld5XMmeNdFOP/kbcDj+ggCyEOBx7tPixD81Qia6AWm7FjQ== bernardo.mejia@gmail.com
xanatos@vmclase001:~/.ssh$

Ahora ya subimos nuestra llave y en teoría ya podemos entrar al server sin necesitad de una centraseña!

intentamos

~$ ssh xanatos@mysqlvm001.bmejiaparedes.mx
The authenticity of host 'mysqlvm001.bmejiaparedes.mx (62.151.176.96)' can't be established.
ECDSA key fingerprint is SHA256:igQgIOtrN74YqwH+uCQONWfTwyCItXgXspFUBaVY8PI.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'mysqlvm001.bmejiaparedes.mx,62.151.176.96' (ECDSA) to the list of known hosts.
xanatos@mysqlvm001.bmejiaparedes.mx's password:

Nos damos cuenta que nos sigue pidiendo passwd, necesitaremos revisar los permisos y tenemos que tener los archivos con los siguientes permisos

 

~/.ssh$ ls -ltr
total 16
-rw-r--r-- 1 xanatos xanatos  750 mar  3 11:14 id_rsa.pub
-rw------- 1 xanatos xanatos 3243 mar  3 11:14 id_rsa
-rw------- 1 xanatos xanatos  750 mar  3 11:21 authorized_keys
-rw-r--r-- 1 xanatos xanatos  444 mar  3 11:25 known_hosts

 

Volvemos a intentar y ahora si podemos entrar sin necesidad de poner una contraseña y solo co nuestra llave.

:~/.ssh$ cd
xanatos@vmclase001:~$ 
xanatos@vmclase001:~$ ssh xanatos@mysqlvm001.bmejiaparedes.mx
Last login: Sat Mar  3 17:32:13 2018 from fixed-189-203-149-57.totalplay.net
[xanatos@vmX ~]$

 

Ahora si ya existe el usuario y tenemos el acceso a las llaves usaremos nuestra llave privada para poder acceder al usuario

aquí tenemos las llaves del usuario clasex1 y haremos lo siguiente

xanatos@vmclase001:~$ ls -ltr |grep id
drwxr-xr-x 2 xanatos xanatos 4096 feb 21 21:28 Videos
-rw------- 1 xanatos xanatos 3243 mar  3 08:34 id_rsa_clasex1
-rw------- 1 xanatos xanatos  744 mar  3 08:34 id_rsa_clasex1.pub
xanatos@vmclase001:~$ 
 
xanatos@vmclase001:~$ ssh -i id_rsa_clasex1 clasex1@mysqlvm001.bmejiaparedes.mx
Last login: Sat Mar  3 16:44:09 2018 from fixed-189-203-149-57.totalplay.net
[clasex1@vmX ~]$

 

Ahora solo usamos nuestra llave privada que fue con anterioridad compartida para con nosotros. :p

Leave a Reply