LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.

Ratio: 4 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio desactivado
 

Puedes acceder a un servidor Linux remoto sin necesidad de introducir la contraseña, siguiendo estos 3 sencillos pasos utilizando ssky-keygen y ssh-copy-id, como se explica en este artículo.

ssh-keygen crea las claves públicas y privadas. ssh-copy-id copia las claves públicas de localhost en el archivo remoto anfitrión y las authorized_keys.

ssh-copy-id también asigna los permisos necesarios en el $HOME del anfitrión remoto, ~/.ssh, y ~/.ssh/authorized_keys. (Esto tiene especial interes si tu IP pública es estática)

Condiciones previas, debes de crear el mismo usuario (antes de empezar), en los servidores local-host y remote-host

Este artículo también explica tres pequeñas molestias de usar ssh-copy-id y cómo usar ssh-copy-id junto con ssh-agent.

 


Configuración previa:

Verifica el archivo de configuración del servidor SSH (/etc/ssh/sshd_config) y asegúrate de que las siguientes líneas estén habilitadas:

Si está comentada la linea, déjala comentada.

# PubkeyAuthentication     no

# O cambia el valor.

PubkeyAuthentication     yes

#  ¡¡CUIADO!! Si pones "no", al valor: PasswordAuthentication pondrás en riesgo el servidor, ninguna cuenta

# pondrás en riesgo el servidor, ninguna cuenta requerirá contraseña si pones "no". deja el valor "yes"
PasswordAuthentication  yes



Paso 1: Creación de claves públicas y privadas utilizando ssh-key-gen en local-anfitrión.

Esto puede saltarse, en el caso de que ya hubiera ssh-keygen creado.

jsmith@local-host$ [Nota: Ahora estás en tu localhost, el host que controlará "remote-host"]

jsmith@local-host$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jsmith/.ssh/id_rsa):[Pulse Intro aquí]
Enter passphrase (empty for no passphrase): [Pulse Intro aquí]
Enter same passphrase again: [Pulse Intro aquí]
Your identification has been saved in /home/jsmith/.ssh/id_rsa.
Your public key has been saved in /home/jsmith/.ssh/id_rsa.pub.
The key fingerprint is:
33:b3:fe:af:95:95:18:11:31:d5:de:96:2f:f2:35:f9 jsmith@local-host


Paso 2: Copie la clave pública al host remoto usando ssh-copy-id

jsmith@local-host$ ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host
jsmith@remote-host's password: [Introduce su password, y pulsa intro]
Now try logging into the machine, with "ssh 'remote-host'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.

En el caso de ser un usurio diferente debes identificarlo.

jsmith@local-host$ ssh-copy-id  -i  ~/.ssh/id_rsa.pub  perico@remote-host

En caso de fallar, también puedes copiarlo por "scp" al directorio ".ssh/id_rsa.pub" o...
cat ~/.ssh/id_rsa.pub | ssh usuario@ip_del_servidor "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Nota: ssh-copy-id añade las claves para el control remoto ssh-anfitrión / authorized_key.

Paso 3: Entrar al host remoto sin introducir la contraseña

jsmith@local-host$ ssh remote-host
Last login: Sun Nov 16 17:22:33 2012 from 192.168.1.2
[Note: SSH no preguntará por el password.]
jsmith@remote-host$         [Nota: ahora estás en el servidor remoto]


Estos 3 simples pasos deben hacer el trabajo en la mayoría de los casos.


Truco.

Archivos Configurables para Multiples Claves o Servidores: Si administras varios servidores, puedes crear un archivo de configuración SSH para facilitar la administración en ~/.ssh/config. Por ejemplo:

Host servidor1
    HostName ip_del_servidor
    User usuario
    IdentityFile ~/.ssh/id_rsa

Esto te permite conectarte simplemente ejecutando: ssh servidor1.



También discutimos anteriormente en detalle acerca de la realización de SSH y SCP utilizando OpenSSH  para entrar sin contraseña.

Utilizar ssh-copy-id con ssh-add/ssh-agent


Cuando el valor se pasa por la opción -i y Si ~/.ssh/identity.pub no está disponible, ssh-copy-id  mostrará el siguiente mensaje de error.

jsmith@local-host$ ssh-copy-id -i remote-host
/usr/bin/ssh-copy-id: ERROR: No identities found

Si ha cargado llaves del ssh-agent con el ssh-add, entonces ssh-copy-id recibirá las llaves del ssh-agent para copiar en el host remoto, es decir, que copia las claves proporcionadas por el comando ssh-add -L para el host remoto, cuando no pasa la opción -i para el ssh-copy-id.

# >> Si al escribir, obtenemos un resultado similar a este:
jsmith@local-host
$ ssh-add -L The agent has no identities.

# >> Escribimos lo siguiente para pasar la "shell al sistema remoto".
jsmith@local-host
$ ssh-agent $SHELL

# >> Introducimos la clave (si procede, vacía, para no pedirla)
jsmith@local-host$ ssh-add
Identity added: /home/jsmith/.ssh/id_rsa (/home/jsmith/.ssh/id_rsa)

# >> Lo verificamos
jsmith@local-host$ ssh-add -L
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAsJIEILxftj8aSxMa3d8t6JvM79DyBV
aHrtPhTYpq7kIEMUNzApnyxsHpH1tQ/Ow== /home/jsmith/.ssh/id_rsa

# >> (En princpio, podría no hacer falta, pero si quieres puedes copiar la Id al host remoto.)
jsmith@local-host$ ssh-copy-id -i remote-host
jsmith@remote-host's password:
Now try logging into the machine, with "ssh 'remote-host'",
and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting.

[Nota: Esto ha añadido la clave mostrado por ssh-add -L]


Tres pequeñas molestias de ssh-copy-id

A continuación se presentan algunas molestias menores del ssh-copy-id.

Default public key: ssh-copy-id utiliza ~/.ssh/ identity.pub como el archivo predeterminado de clave pública (es decir, cuando no hay valor se pasa a la opción -i). En su lugar, me gustaría utilizar id_dsa.pub o id_rsa.pub o identity.pub como claves predeterminadas. es decir, si cualquiera de ellos existe, se debe copiar para el host remoto. Si dos o tres de ellos existen, se debe copiar identity.pub como predeterminado.

El agente no tiene identidad: Cuando el ssh-agent se está ejecutando y ssh-add -L devuelve "El agente no tiene identidad" (es decir, no hay claves que se agregan al ssh-agent), el ssh-copy-id todavía copiará el mensaje "El agente no tiene identidad" para la entrada de la máquina remota de authorized_keys.

Duplicar entrada en authorized_keys: Deseo ssh-copy-id valida la entrada duplicada en authorized_keys del host remoto. Si ejecuta ssh-copy-id varias veces en el host local, se mantendrá anexar la misma clave en el archivo de authorized_keys del host remoto sin comprobación de duplicados. Incluso con las entradas duplicadas, todo funciona como se esperaba. 

No estás registrado para postear comentarios



Redes:



   

 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Formulario de acceso

Filtro por Categorías