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
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