Configura conexiones SSH sin password en solo 3 pasos
Hola,
Aquí verán el cómo conectarse a una PC remotamente por SSH tan solo introduciendo el password una primera vez, luego aunque reiniciemos ambos ordenadores, no se nos volverá a pedir el password.
Pero, primero veamos una breve explicación sobre qué es SSH:
SSH es un protocolo, un medio de comunicación entre dos ordenadores. Nos permite administrar un equipo de forma remota. Cuando accedamos por SSH a otro equipo, el comando que introduzcamos en esa terminal se ejecutará en el otro equipo, de esta forma lo administramos/controlamos.
Todo lo que se transmita por SSH, va encriptado y con una seguridad considerablemente buena.
Ahora, veremos como en solo tres pasos configuraremos PC#1 para que acceda a PC#2 sin introducir contraseña:
Tenemos la siguiente situación:
PC#1 -» Desea conectarse a PC#2, sin tener que escribir password cada vez que se intente conectar a esta otra PC.
PC#2 -» Tiene instalado el servidor SSH. Esta es a la que PC#1 se conectará, y lo hará sin introducir password. En esta PC hay un usuario llamado root.
Empecemos…
1. En PC#1 escribimos lo siguiente:
- ssh-keygen -b 4096 -t rsa
Esto generará una llave pública. Para no enredarnos mucho con “llaves públicas y privadas”, lo explicaré de forma muy simple.
Supongamos que tienes dos llaves de tu casa en el bolsillo, una se la das a tu novia ya que viven juntos, y con la otra te quedas solo tú, no se la das a nadie. Bueno, esa llave que le diste a tu novia, le permitirá entrar a tu casa sin decírtelo, sin pedirte permiso no? eso es una llave pública, una “llave” que permite que una PC acceda a otra sin tener que pedirte permiso (o sea, sin poner usuario+password)
Cuando pongan ese comando, les aparecerá eso:
2. Simplemente presionemos [Enter], un segundo después volvemos a presionar [Enter], y un segundo después volvemos una vez más a presionar [Enter]. O sea, presionaríamos [Enter] un total de tres (3) veces, solo lo presionamos… no escribimos nada
Cuando hagamos esto, nos aparecerá algo muy similar a lo siguiente:
Listo, ya tenemos la llave pública… ahora falta dársela a quien queramos (como el ejemplo, dársela a nuestra novia jaja)
Lo que queremos es que PC#1 se conecte a PC#2, ya en PC#1 hicimos todo lo anterior, en PC#2 no hemos hecho nada. Bien, PC#2 tiene de dirección IP por ejemplo 10.10.0.5.
3. Ponemos en PC#1 lo siguiente:
- ssh-copy-id root@10.10.0.5
Esto lo que hace es simplemente darle la llave pública de PC#1 a PC#2, o sea, le dá a PC#2 la llave pública de PC#1, mientras que PC#1 se queda con su llave privada, ya saben; esa llave que no se le dá a nadie. Es importante no equivocarse con el usuario, o sea, si el usuario “root” no existe en PC#2 nos dará error, es importante estar claro en qué usuario usaremos para esto, además de que ese usuario con que configuramos el acceso sin password, será el mismo con que deberemos acceder en el futuro. Una vez hecho esto nos debe quedar así:
En el paso anterior, deben poner el password del usuario en PC#2.
Y listo… ya está todo configurado
Como bien nos aparece en la terminal, probemos si de veras todo funcionó 100% OK. Para probar, ponemos:
- ssh root@10.10.0.5
Si desean acceder a otro ordenador también sin introducir password siempre (PC#3 por ejemplo), simplemente le damos nuestra llave pública y listo, o sea, una vez que hayamos hecho el paso #1 y #2 no lo tendremos que hacer nunca más. Si queremos acceder a PC#3 por ejemplo, que tiene por IP 10.10.99.156 tan solo ponemos:
- ssh root@10.10.99.156
Hasta aquí el tutorial.
Explicar que, el nivel de seguridad cuando hablamos de SSH es realmente alto, la metáfora con que expliqué algunos pasos (la de darle la llave a nuestra novia) tal vez no sea la más adecuada jaja, ya que nuestra novia podría darle la llave a alguien más. Cuando hablamos de SSH, los principios de seguridad son fáciles de explicar, cuando intentamos acceder nuestro ordenador (PC#1) comprueba si en PC#2 hay una llave pública de nuestro ordenador (en este caso sí la hay, porque así lo configuramos), entonces, de haberla es simple, comprueba si esa llave pública es idénticamente igual a nuestra llave privada (esa que no le dimos a nadie). Si las llaves son idénticas nos deja acceder, de lo contrario y como medida de seguridad, no nos deja acceder remotamente al otro ordenador.
Así que ya saben… darle la llave de casa a nuestra novia no es lo más seguro, pero compartir llaves y acceder remotamente por SSH a otro ordenador, sí es seguro ^_^
Dudas o preguntas, quejas o sugerencias me las dejan saber.
Saludos a todos.



De veras no entiendo como tú siendo tan paranoico con la seguridad cometas semejante error. Si en el paso donde dice:
Enter passphrase (empty for no passphrase)No escribimos nada, estamos perdido si un usuario logra acceder a nuestra PC y abrir un terminal, ya que automáticamente que ejecute:
ssh root@10.10.0.5Entrará sin pedir contraseña.
Si alguien gana acceso a mi laptop, sí, podrá acceder a PC#2 sin necesidad de poner el password de esta, no obstante como bien dices, soy un paranoico de la seguridad, ¿crees de veras que ganar acceso a mi laptop es algo tan simple? JAJA.
Cuando me levanto siempre, siempre bloqueo la pantalla, de lo contrario a los 30 segs de que no haya actividad en el mouse o teclado de la laptop, se bloqueará igual
¿Y todo esto se puede aplicar a un terminal windows que tiene que conectarse a múltiples *NIX?
Tengo putty pero puedo usar tambien Securecrt (ahora lo tengo scripteado)
En el terminal de Windows (cmd) estoy convencido de que no, ahí no será posible.
No obstante si usas Putty podrías probarlo, podría funcionar.
Saludos y bienvenido a nuestro sitio
Gracias por el post, muy util. Es un tanto aburrido tanto logueo en el SSH para todo.
Hola y mil gracias por tu visita y comentario
Nada amigo, todo un placer saber que te fue de ayuda… si podemos ayudarte de alguna otra forma, nosotros más que encantados
Saludos y bienvenido al sitio.
Excelente.. de verdad que inspira ver éste tipo de tutoriales, me dan ganas de aportar tambien mis experiencias ya simplificadas para que la comunidad pueda aprobecharlas. Gracias de verdad desde El Salvador.
me estoy conectando con una maquina con ubuntu hacia una que tiene debian pero me dar un erro en el cual no puede autenticar y por lo tanto me pide la clave.. por que sucedera esto? sera que las versiones del ssh-keygen difieren o que sera lo que esta pasando?
Pon acá el error que te da para poderte ayudar mejor
También, puedes intentar poniendo esto en una terminal:
sudo mv $HOME/.ssh/known_hosts /opt/Esto lo que hace es limpiar las conexiones (historial de conexiones) SSH que hayas tenido.
Y si quisiera usar la misma llave pública para varios servidores, lo podría hacer, o tengo que crear una llave por cada servidor al que quiera acceder? Que lo voy a probar de todos modos, pero en algún servidor inútil para no dar al traste con alguno útil.
Gracias y saludos.
Yo como lo tengo hecho en mi laptop es una llave diferente para cada servidor, de hecho, creo que no es posible usar una misma llave para varios… pues el ID de cada servidor es único, como una huella dactilar
Saludos
Hola señor de la arena. He estado leyendo de llaves y encontré que el par de llaves (pública y privada) sirven al servidor-cliente para enviar y recibir desafíos y así identificarse uno al otro, por lo que no tiene nada que ver con la contraseña que usas para acceder al servidor, ésta última sirve para poder “pegar” la llave pública en las de confianza del servidor. Así que puedes utilizarla en tantos como quieras o necesites.
No sé si me expliqué, pero el chiste es que para poder utilizar tu par de llaves en otros servidores, después de haber seguido tu tuto, solo tienes que hacer:
ssh-copy-id otro.usuario@otra.ip
escribir tu contraseña de este otro servidor
Y listo.
Saludos
Hola, gracias por la guía, fue la única que me sirvió. Ahora que quiero hacerlo en otro par de computadoras obtengo lo siguiente:
$ ssh-copy-id -p 4000 lm11@148.218.32.91
Bad port ‘umask 077; test -d ~/.ssh || mkdir ~/.ssh ; cat >> ~/.ssh/authorized_keys’
Gracias por tu ayuda.