Las conecciones remotas a través de el protocolo SSH se pueden facilitar obviando el usuario y la contraseña usando sistemas de validacion asimetrica.
Esta validación se fundamenta en la creación de dos claves encriptadas, una privada que solo tendrá el dueño del mensaje o la conección y una pública que tendran los destinatarios de correo o las computadoras remotas.
El principio es practicamente el mismo para SSH y para los correos autentificados.
Primero que nada el usuario (x-man) que desee conectarse por SSH con Claves debe generar esas claves en el Cliente (aqui x-man-pc). Para esto usara en sistemas niXs una herramienta llamada ssh-keygen.
x-man-pc:~ x-man$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/x-man/.ssh/id_rsa):
Created directory '/Users/x-man/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/x-man/.ssh/id_rsa.
Your public key has been saved in /Users/x-man/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:G8M+S4PG5MfdWmbntaRnptl3KBgnpV2HdBoS8L1mJ8w X-man@x-man-pc.local
The key's randomart image is:
+---[RSA 2048]----+
| .... |
| ...o .|
| .o.= |
| . .o+..|
| . S + .E..|
| + + =+.oo o |
| = O .== .o.|
| . o +.=.o*=+|
| . . =*oo|
+----[SHA256]-----+
Esto significa que ssh-keygen va a crear un par de claves publica/privada y las va a guardar (por defecto) en la carpeta (Escondida por . ) de usuario con el nombre id_rsa
Ahora ssh-keygen ha creado una nueva carpeta y dentro estan las dos claves.
Y cuando quiero conectarme por ssh...
este fingerprint (arriba) es lo mismo que esta guardado en ir_dsa.pub, es sólo otra formato, para verlo como fingerprint otra vez, debemos ejecutar:
x-man-pc:.ssh x-man$ ssh-keygen -l -f id_rsa.pub
2048 SHA256:G8M+S4PG5MfdWmbntaRnptl3KBgnpV2HdBoS8L1mJ8w x-man@x-man-pc.local (RSA)
cambiar la Paraphase:
ssh-keygen -p -f ~/.ssh/id_dsa
Tipos de claves:
ecdsa = 256
dsa = 1024
rsa = 2048
Importante:
Si el cliente pregunta "password"
3 veces antes de ejecutar la conneccion ssh, y luego conecta sólo poniendo un usuario existente en el servidor-ssh es porque la clave publica no se ha exportado al servidor, para esto ejecutamos:
sudo ssh-copy-id -i ~/.ssh/id_rsa.pub administrator@192.168.148.136
donde administrador va a ser el usuario que va a poder entrar con esa clave sin importar el nombre que tenga en el cliente. Es el nombre antes de @nombrehost. Tiene que existir en el Servidor
Si todavia para exportar la clave pregunta por 3 veces por la clave del administrador, puede ser que el acceso sobre ssh esta impedido para el root
Mas Informacion:
https://www.freebsd.org/doc/de_DE.ISO8859-1/books/handbook/openssh.html
http://manpages.ubuntu.com/manpages/xenial/en/man8/sshd.8.html
https://www.linuxtotal.com.mx/index.php?cont=info_seyre_010
https://www.linuxtotal.com.mx/index.php?cont=info_seyre_003
https://serverfault.com/questions/690855/check-the-fingerprint-for-the-ecdsa-key-sent-by-the-remote-host
https://blog.mellenthin.de/archives/2007/08/08/ssh-fingerprint-uberprufen/
https://apple.stackexchange.com/questions/254468/macos-sierra-doesn-t-seem-to-remember-ssh-keys-between-reboots
TIPPS:
Si tienes varias computadoras no necesitas generar una nueva Llave en cada una, lo causaria que el servidor tenga una lista grande de computadoras, claves publicas, etc. , es suficiente si copias las claves que ya tienes de computadora en compu. No confundas esto con ssh-copy-id. Esta copia la debes realizar manualmente por ejemplo con un usb-stick o por la red.
- En algunas Distribuciones de Linux viene el usuario root desactivado, si lo activas por ejemplo con
sudo -u root passwd
puedes tener problemitas para logearte por ssh y hasta para exportar la clave. Esto es puede ser porque el ssh esta desactivado para root. Para esto te vas a /etc/ssh/sshd_config y agregas la linea:
PermitRootLogin yes
- Cuando copiamos unas claves en la carpeta .ssh de manera manual (con el explorador de archivos, finder, cp) los derechos se cambian a rwxrr o 644, lo que ssh reconocerá como riesgoso. Al probar la conexion aparece el mensaje:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/usuariox/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/usuariox/.ssh/id_rsa": bad permissions
root@servidor.com's password:
para reparar esto basta asignarle los permisos 600. Algunos Blogs dicen que el 400 funciona, cosa que a mi no me resulta puesto que me dice que no es accesible.
No hay comentarios:
Publicar un comentario