Existen dos formas de autentificarse en SSH
- Autentificación por Password
- Autentificación por Claves
Yo me centrare en la segunda opción, ya que con la primera solo basta saber la password del usuario remoto.
Objetivo:
Usar autentificación mediante clave publica para acceder a un servidor remoto sin tener que escribir la password.
Ventajas
- Hacer menos tedioso el acceso a servidores que con frecuencia accedemos.
- Nos permite automatizar tareas ( Script de backup, cront etc).
Escenario
1) Generando Claves En Ambiente Local:
Entendiendo el comando ssh-keygen
- Comando que genenera, administra y convierte las claves de autenticación SSH.
- Las claves pueden ser de encriptación tipo RSA o DSA ( en protocolo SSH 2).
- Normalmente se nos sugiere el nombre del archivo donde se guardará la clave privada.
- Normalmente la clave publica tendra el mismo nombre que la privada pero con extension .pub .
- Normalmente nos preguntará si deseamos ingresar una frase de paso (contraseña) para seguridad de nuestras claves.
Ejecutamos uno de estos 2 comandos:
user_a@host_a ]# ssh-keygen
user_a@host_a ]# ssh-keygen -t rsa -b 2048
NOTA Estos comandos realizan lo mismo, ya que el primero tiene por defecto las opciones del segundo. -t : tipo rsa o dsa |
Luego de ejecutar lo anterior, la salida en pantalla sera la siguiente:
Dejamos todo tal cual y presionamos ENTER .....
Luego por pantalla se nos indicara si deseamos ingresar una frase de paso de seguridad(contraseña)para nuestras claves.
Luego se nos volverá a preguntar por la misma frase de paso...
Si todo resulta bien obtendremos en pantalla algo similar a esto:
Hasta ahora tenemos:
Ahora vamos a compartir la clave publica que acabamos de generar con el host remoto host_b.
Ejecutamos lo siguiente en el host local (host_a):
Si todo resulta bien obtendremos la siguiente salida en pantalla:
Ahora solo queda probar la conexión SSH sin password al host remoto.
Desde la linea de comandos:
Saludos a los que visiten este blog!!
Generating public/private rsa key pair. Enter file in which to save the key (/home/user_a/.ssh/id_rsa):
- La primera linea indica que se van a generar el par de claves (privada / publica).
- En la segunda linea se nos sugiere la ubicación en donde se guardara la clave privada, si no ingresamos nada por defecto se guarda en el path home del usuario (/home/user_a/.ssh/id_rsa).
Dejamos todo tal cual y presionamos ENTER .....
Luego por pantalla se nos indicara si deseamos ingresar una frase de paso de seguridad(contraseña)para nuestras claves.
Enter passphrase (empty for no passphrase):Como nosotros deseamos conectarnos al host remoto sin password no escribimos nada y presionamos ENTER ...
Luego se nos volverá a preguntar por la misma frase de paso...
Enter same passphrase again:No introducimos nada y volvemos a presionar ENTER...
Si todo resulta bien obtendremos en pantalla algo similar a esto:
Your identification has been saved in /home/user_a/.ssh/id_rsa. Your public key has been saved in /home/user_a/.ssh/id_rsa.pub. The key fingerprint is: c7:8c:2d:88:b0:42:d5:2f:7a:4f:6b:bd:f4:b7:9b:23 user_a@host_a The key's randomart image is: +--[ RSA 2048]----+ | .. | | . . | | .. . | |. o o o = | |. . o o S = | | . . . . o | | . o o. | | +...E o. | | . ...o++ | +-----------------+
Hasta ahora tenemos:
- Generadas nuestra clave privada (id_rsa) y nuestra clave pública (id_rsa.pub) bajo el directorio /home/user_a/.ssh/.
- Ambas claves están encriptas con el algoritmo de tipo RSA y con un tamaño de 2048 bits.
- La clave privada no la compartimos con nadie y valga la redundancia "la mantenemos oculta bajo siete llaves".
2) Compartiendo Clave Publica con host remoto
Ahora vamos a compartir la clave publica que acabamos de generar con el host remoto host_b.
Ejecutamos lo siguiente en el host local (host_a):
[user_a@host_a ]# ssh-copy-id -i /home/user_a/.ssh/id_rsa.pub user-b@host_b
- Con lo anterior le enviamos al host remoto host_b nuestra clave publica.
- Con la opción -i indicamos donde esta nuestra clave publica.
- La clave publica quedara en el host remoto en el archivo con nombre authorized_keys, si este archivo no existe se creará automáticamente.
Si todo resulta bien obtendremos la siguiente salida en pantalla:
Now try logging into the machine, with "ssh 'user_b@host_b'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting.
3) Probando conexión ...
Ahora solo queda probar la conexión SSH sin password al host remoto.
REFERENCIA
Desde la linea de comandos:
man ssh-keygen man ssh-copy-id
Saludos a los que visiten este blog!!