Acceso SSH sin contraseña usando claves pública y privada

Sección Unicamente para Tutoriales y Guías
Responder
Avatar de Usuario
egrueda
Pi God
Pi God
Mensajes: 3426
Registrado: 10 Feb 2017, 19:31
Agradecido: 7 veces
Agradecimiento recibido: 269 veces

Para no tener que estar intercambiando contraseñas, es habitual utilizar un par de claves pública/privada como autenticación para el acceso SSH:
Cuando generas un par de claves, tú te quedas la clave privada y puedes instalar la clave pública en aquellos equipos a los que quieras acceder.
Así, teniendo tu clave privada en tu ordenador y tu clave pública en el ordenador remoto, puedes autentificarte sin contraseña

1. Generar las claves pública y privada
Bajo la cuenta del usuario actual (por ejemplo, el usuario "pi") ejecutamos:

Código: Seleccionar todo

ssh-keygen -t rsa
Esto nos crea un directorio oculto .ssh dentro de nuestro home (/home/pi/.ssh)
Dentro de ese directorio aparecerán dos archivos:
- id_rsa es tu clave privada. No debe ser compartida
- id_rsa.pub es tu clave pública, la que instalaremos en servidores remotos

Puedes ver el contenido de tu clave pública:
cat /home/pi/.ssh/id_rsa.pub

2. Importar la clave pública en el servidor remoto
Ahora vamos servidor al que queremos acceder con nuestra clave privada.
Para ello copiamos la clave pública al servidor de destino (o copiamos y pegamos el contenido de la clave pública)

En el servidor remoto debemos tener el directorio .ssh dentro de la carpeta del usuario al que nos queremos conectar
Dentro de ese directorio creamos un archivo llamado authorized_keys
Y dentro de ese archivo pegamos el contenido de todas las claves públicas que queremos autorizar.
Es decir, si queremos acceder a la cuenta del usuario root, debemos meter la clave en:
/root/.ssh/authorized_keys
O si queremos acceder como el usuario "pi" del servidor remoto:
/home/pi/.ssh/authorized_keys

3. Comprobamos los permisos
El directorio .ssh debe tener permisos 700 (chmod 700 .ssh)
Y el archivo authorized_keys también debe tener permisos 600 (chmod 600 .ssh/authorized_keys)

4. Conectamos con el servidor remoto
Conectamos como siempre:
- ssh root@11.22.33.44 para acceder como root con la clave pública de /root/.ssh/authorized_keys
- ssh pi@11.22.33.44 para acceder como pi con la clave pública de /home/pi/.ssh/authorized_keys
La primera vez que conectamos recibiremos el típico aviso de que no se conoce el equipo remoto:
The authenticity of host '11.22.33.44 (11.22.33.44)' can't be established
Si respondemos "Yes" se guardará en la lista de equipos conocidos.

Y ya está, deberíamos estar accediendo sin contraseña
Estos usuarios agradecieron al autor egrueda por el mensaje (total 2):
Kikedanpacu
Avatar de Usuario
danpacu
Pi Destroyer
Pi Destroyer
Mensajes: 540
Registrado: 27 Nov 2019, 21:42
Agradecido: 58 veces
Agradecimiento recibido: 25 veces

Buenas.
Generé las claves, les di los permisos 700. (todo esto en mi mac).
Pero como es de esperar tengo las siguientes dudas.
- ahora he de copiar en la raspi la id_rsa.pub, o su contenido en el fichero authorized keys? O al revés. Hago todo el proceso en la raspi, y copio en mi mac el id_rsa.pub?
- para conectarme desde el movil (o ipad - que más de una vez me viene a mano) como se deberia de hacer?
POr otro lado, un gran gracias por el tutorial al compañero @egrueda. Una labor extraordinadria.
Un saludo a tod@s!!!!!! :mmm
Avatar de Usuario
egrueda
Pi God
Pi God
Mensajes: 3426
Registrado: 10 Feb 2017, 19:31
Agradecido: 7 veces
Agradecimiento recibido: 269 veces

danpacu escribió: 14 Dic 2020, 12:57 - ahora he de copiar en la raspi la id_rsa.pub, o su contenido en el fichero authorized keys? O al revés. Hago todo el proceso en la raspi, y copio en mi mac el id_rsa.pub?
En tu caso, el cliente SSH es el mac y el servidor SSH es la raspi.
Entonces generas las claves en el clietne (mac) y después la importas en el servidor (raspi)
Dentro del fichero authorized_keys del servidor metes el contenido de la clave pública que deseas autorizar, en este caso el contenido del id_rsa.pub que has generado en el mac
danpacu escribió: 14 Dic 2020, 12:57 - para conectarme desde el movil (o ipad - que más de una vez me viene a mano) como se deberia de hacer?
Si ya tienes una clave pública en la raspi, puedes copiar la clave privada en tu móvil y en tu ipad y usarla para conectar.
Ya sabes: clave privada en tu lado y clave pública en el servidor SSH
O si lo prefieres, puedes generar una pareja de claves en el ipad, por ejemplo, y copiar la clave pública del ipad en el authorized_keys del servidor, debajo de la que ya tienes. Así autorizas varias claves.
Avatar de Usuario
danpacu
Pi Destroyer
Pi Destroyer
Mensajes: 540
Registrado: 27 Nov 2019, 21:42
Agradecido: 58 veces
Agradecimiento recibido: 25 veces

Entendido. Me pongo a ello y a probarlo. Muchas gracias por las aclaraciones.
Un saludo a tod@s!!!!!! :mmm
Avatar de Usuario
danpacu
Pi Destroyer
Pi Destroyer
Mensajes: 540
Registrado: 27 Nov 2019, 21:42
Agradecido: 58 veces
Agradecimiento recibido: 25 veces

buenas. algo estoy haciendo mal. me explico:
- en mi mac creo las llaves con ssh-keygen -t rsa. como por terminal no se copiarlas bien en la raspi, por afp me copio la id_rsa.pub n la carpeta .ssh de la misma raspi.
- en la raspi hago sudo cp /home/pi/.ssh/id_rda.pub /home/pi/.ssh/authorized_keys (esto me copia dentro del fichero authorized.... la clave id_rda.pub, verdad)
- en terminal, en la raspi hago sudo chmod -R 700 /home/pi/.ssh
- desconecto
- conecto por terminal desde mac con ssh pi@ip_pi y me sigue pidiendo la contraseña.
de conectar ni hablar que no consegui pasar de la contraseña.
-que hago mal?? o debe de pedirme la contraseña??? no consigo pillar del todo bien que hago mal
Un saludo a tod@s!!!!!! :mmm
Avatar de Usuario
egrueda
Pi God
Pi God
Mensajes: 3426
Registrado: 10 Feb 2017, 19:31
Agradecido: 7 veces
Agradecimiento recibido: 269 veces

Vamos a analizar el problema desde el final:
Conéctacte por SSH con debug:
ssh -v pi@ip_pi

Así vemos todo lo que está haciendo

P.D. Debería ser "id_rsa.pub" y no "id_rda.pub"
Avatar de Usuario
egrueda
Pi God
Pi God
Mensajes: 3426
Registrado: 10 Feb 2017, 19:31
Agradecido: 7 veces
Agradecimiento recibido: 269 veces

Se me olvidaba que hay una opción "exprés" para copiar la clave:
ssh-copy-id pi@ip_pi
;-)
Avatar de Usuario
danpacu
Pi Destroyer
Pi Destroyer
Mensajes: 540
Registrado: 27 Nov 2019, 21:42
Agradecido: 58 veces
Agradecimiento recibido: 25 veces

egrueda escribió: 14 Dic 2020, 19:48 P.D. Debería ser "id_rsa.pub" y no "id_rda.pub"
Error de tipografia - estaba escribiendo desde el movil, esperando recoger al niño. CUlpa mía, de todos modos por no comprobar...

Y aqui: https://pastebin.com/ el debug
Un saludo a tod@s!!!!!! :mmm
Avatar de Usuario
egrueda
Pi God
Pi God
Mensajes: 3426
Registrado: 10 Feb 2017, 19:31
Agradecido: 7 veces
Agradecimiento recibido: 269 veces

Revisa el enlace de pastebin porfa
Avatar de Usuario
danpacu
Pi Destroyer
Pi Destroyer
Mensajes: 540
Registrado: 27 Nov 2019, 21:42
Agradecido: 58 veces
Agradecimiento recibido: 25 veces

Perdooooon .

https://pastebin.com/QfCZz3c2

Allí va.
Un saludo a tod@s!!!!!! :mmm
Avatar de Usuario
egrueda
Pi God
Pi God
Mensajes: 3426
Registrado: 10 Feb 2017, 19:31
Agradecido: 7 veces
Agradecimiento recibido: 269 veces

Me encanta ese log, es super fácil de entender todos los pasos que realiza.
Veamos esta parte:

Código: Seleccionar todo

debug1: Next authentication method: publickey
debug1: Trying private key: /Users/danpacu/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /Users/danpacu/.ssh/id_dsa
debug1: Trying private key: /Users/danpacu/.ssh/id_ecdsa
debug1: Trying private key: /Users/danpacu/.ssh/id_ed25519
debug1: Trying private key: /Users/danpacu/.ssh/id_xmss
debug1: Next authentication method: password
Ahí ssh intenta usar las claves privadas, y ninguna es aceptada.
Comprueba si el contenido de la clave es el mismo en ambos lados:
En el mac:
cat /Users/danpacu/.ssh/id_rsa.pub
En la raspi
cat /home/pi/.ssh/authorized_keys

También debes comprobar los permisos del directorio y del archivo en la raspi:
ls -la /home/pi/.ssh

Por último, otra opción es copiar la clave usando el otro método:
ssh-copy-id -i /Users/danpacu/.ssh/id_rsa.pub pi@192.168.1.71
Aunque estaría bien localizar la causa del problema
Avatar de Usuario
danpacu
Pi Destroyer
Pi Destroyer
Mensajes: 540
Registrado: 27 Nov 2019, 21:42
Agradecido: 58 veces
Agradecimiento recibido: 25 veces

Ok. Proceso rulado desde el principio, otra vez, de nuevas (borre todos los ficheros anteriores) ,y
ssh-keygen -t rsa.
Aqui el resultado. https://pastebin.com/5igjPdgu

Comprobe las claves con el comando cat y son identicas.
El siguiente paso? pruebo con el comando debug anteriormente indicado?
Un saludo a tod@s!!!!!! :mmm
Avatar de Usuario
egrueda
Pi God
Pi God
Mensajes: 3426
Registrado: 10 Feb 2017, 19:31
Agradecido: 7 veces
Agradecimiento recibido: 269 veces

Lo veo todo bien excepto los permisos del authorized_keys, prueba con chmod 600 (en lugar de 700)
Aunque no estoy seguro de que sea por eso
Avatar de Usuario
danpacu
Pi Destroyer
Pi Destroyer
Mensajes: 540
Registrado: 27 Nov 2019, 21:42
Agradecido: 58 veces
Agradecimiento recibido: 25 veces

sudo chmod 600 /home/pi/.ssh/authorized_keys
pi@raspberrypi:~ $ ls -la /home/pi/.ssh
total 20
drwx------ 2 pi pi 4096 dic 14 21:03 .
drwxr-xr-x 26 pi pi 4096 dic 14 20:07 ..
-rw------- 1 pi pi 575 dic 14 21:03 authorized_keys
-rwx------ 1 pi pi 222 nov 18 21:17 known_hosts
pi@raspberrypi:~ $

Y ahora desconecto y pruebo a conectar con ssh pi@192..... verdad? o con el debug? (para ver ya todo el proces otra vez... lo bueno es que yo vi igual que tu la mism info pero claro, la interpretación es distinta: la tuya es: "ok, esto funciona, esto no... " y la mia... "pfff que entiendo yo de aqui?) :xd :xd :xd "
Un saludo a tod@s!!!!!! :mmm
Avatar de Usuario
danpacu
Pi Destroyer
Pi Destroyer
Mensajes: 540
Registrado: 27 Nov 2019, 21:42
Agradecido: 58 veces
Agradecimiento recibido: 25 veces

FUncionaaaaaa!!!!!!!!!!!! Eurekaaaaa:
https://pastebin.com/DRvZzs55

Ahora a por el ipad y el iphone. ajajajajjaja.
Un saludo a tod@s!!!!!! :mmm
Avatar de Usuario
egrueda
Pi God
Pi God
Mensajes: 3426
Registrado: 10 Feb 2017, 19:31
Agradecido: 7 veces
Agradecimiento recibido: 269 veces

Ah, pues puede que sea por los permisos.
Enhorabuena, ya lo tienes ;-)
Responder