SSH sin contraseña
Cansado de tener que buscar este tipo de soluciones, molestarme en seleccionar la correctamente explicada y traducirme temporalmente los contenidos, voy a volcar mis notas técnicas en este blog. Disculpad los que tengan que sufrir.
1.- Generamos una pareja de claves pública y privada en la máquina y usuarios, desde el cual accederemos. Esto es como crear una identidad digital, para que los demás nos conozcan. Una cuestion importante antes de esto. Lo recomendable es introducir una frase de paso antes para emplear las claves, pero esto nos obligará a introducirla siempre que las usemos. Mi consejo es que si tu objetivo es no memorizar las claves de cada una de las máquinas, unificando el acceso en una sola clave, adelante. Si tu objetivo es, como fue el mio, emplear esto en scripts, no le pongas clave, pero mucho ojo con los permisos de los ficheros y con la seguridad del usuario en la máquina local:
# ssh-keygen -t rsa.
Esto genera dos ficheros ubicados en /home/"usuario_local"/.ssh : id_rsa y id_rsa.pub (Claves privada y pública). El primero NUNCA debe de salir de tu equipo, mientras que el segundo debes de incorporarlo a los demás.
2.- Debemos de acceder a la máquina remota, elige tu el sistema, para depositar nuestra identidad. La identidad la debes de depositar en el directorio /home/"usuario_remoto"/.ssh, siendo el "usuario_remoto", el usuario con el cual entras. Dentro de este directorio hay al menos un archivo denominado authorized_keys. En este AÑADES la línea contenida en el fichero id_rsa.pub. En mi caso me gusta seguir estos pasos:
2.1.- Desde el equipo local, ubicándonos en el directorio .ssh , copiamos el fichero .pub:
local# scp id_rsa.pub eqremoto:/home/"usuario_remoto"/.ssh/importar_clave
2.2.- Añadimos la línea. Ya entrando en la máquina remota:
local# ssh eqremoto
remota# cd /home/"usuario_remoto"/.ssh
remota# cat importar_clave >> authorized_keys
remota# chmod 644 authorized_keys
2.3. La línea chmod evita que alguien no autorizado pueda modificar el fichero. Ya podemos borrar el fichero creado para llevar la clave de la máquina local a la remota.
remota# rm /home/"usuario_remoto"/.ssh/authorized_keys
(Acepto comentarios y sugerencias de mejora, incluso dudas al respecto.).
Fe de erratas: Se ha corregido un error en el nombre del fichero de claves, faltaba una h.
Gracias.
Complemento:
Para aquellos que necesiten realizar una copia en un dispositivo remoto empleando el ufsdump, tan popular en los Solaris, podéis emplear el método anterior para garantizar que el acceso vía ssh no requiere contraseña, y luego ejecutar el comando siguiente:
# ufsdump 0uf - /dev/md/rdsk/d33 | ssh eqremoto "dd obs=32k ibs=32k
of=/dev/rmt/0n"
Esto está probado entre dos máquinas Solaris y funciona perfectamente.
SOLUCION DE PROBLEMAS:
1.- Una potente manera de resolver problemas en la puesta en marcha de esta solución es arrancar el demonio y el cliente con las opciones de depuración:
Ejecutamos el demonio en la máquina remita:
eqremoto# /usr/sbin/sshd -p 2200 -ddd
(la opción -p indica el puerto del servicio, las 'd's indican los grados de depuración.)
En el caso del cliente hacemos algo similar:
eqlocal# ssh -p 2200 -vvv remota
Ambos terminales nos darán información de las negociaciones para la conexión.
2.- Comparar la identidad de la máquina local con la identidad registrada en la remota puede resultar conveniente.
Os recomiendo en la máquina remota ejecutar lo siguiente:
eqremoto# cat -n /home/"usuarioremoto"/.ssh/authorized_keys
Este enumera las líneas para diferenciar claramente cada una de las claves
eqlocal# cat -n /home/"usuariolocal"/.ssh/id_rsa.pub
Este solo debe de contener una linea y ha de ser idéntica a alguna de las existentes en el equipo remoto.
3.- Debéis de aseguraros que ambas máquinas se identifican correctamente por nombre, es decir, que los nombres de los asociados a cada máquina, están correctamente relacionados en el fichero /etc/hosts.





No hay comentarios:
Publicar un comentario