it-swarm-es.com

¿Cómo se configura ssh para autenticar usando claves en lugar de un nombre de usuario / contraseña?

¿Cómo se configura ssh para autenticar a un usuario utilizando claves en lugar de un nombre de usuario/contraseña?

34
ScArcher2

Para cada usuario: deben generar (en su máquina local) su par de claves usando ssh-keygen -t rsa (el rsa se puede reemplazar con dsa o rsa1 también, aunque esas opciones no son recomendables). Luego necesitan poner el contenido de su clave pública (id_rsa.pub) dentro ~/.ssh/authorized_keys en el servidor que está iniciando sesión.

27

De hecho, prefiero ssh-copy-id , una secuencia de comandos que se encuentra en * nix de forma predeterminada (también se puede poner en Mac OS X con la suficiente facilidad) que automáticamente hace esto por usted . Desde la página del manual:

ssh-copy-id es un script que usa ssh para iniciar sesión en una máquina remota (presumiblemente usando una contraseña de inicio de sesión, por lo que la autenticación de contraseña debe estar habilitada, a menos que haya hecho un uso inteligente de múltiples identidades)

También cambia los permisos de inicio del usuario remoto, ~/.ssh y ~/.ssh/Authorizedkeys para eliminar la capacidad de escritura del grupo (lo que de otro modo le impediría iniciar sesión, si el sshd remoto tiene StrictModes establecido en su configuración).

Si se da la opción -i, se usa el archivo de identidad (predeterminado en ~/.ssh/identity.pub), independientemente de si hay claves en su agente ssh.

23
Chris Bunch

Hum, no lo entiendas. Simplemente cree una clave y comience. :) HOWTO Además, puede prohibir el inicio de sesión mediante contraseña. En p./etc/ssh/sshd_config:

PasswordAuthentication no
6
Node

Esto es bastante sencillo de hacer: hay un tutorial simple para ser que se encuentra aquí .

Los puntos principales son:

  • Correr ssh-keygen en su máquina. Esto generará claves públicas y privadas para usted.
  • Copie y pegue el contenido de su clave pública (probablemente en ~/.ssh/id_rsa.pub) dentro ~/.ssh/authorized_keys en la máquina remota.

Es importante recordar que esto le dará a cualquier persona que tenga acceso a la clave privada en su máquina el mismo acceso a la máquina remota, por lo que al generar el par de claves puede optar por ingresar una contraseña aquí para mayor seguridad.

3
ConroyP

Para que los usuarios de Windows configuren PuTTY

2
Gareth

Para resumir lo que otros han dicho, configurar claves SSH es fácil e invaluable.

En la máquina en la que estará SSHing from necesita generar su par de claves:

claudius:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/dinomite/.ssh/id_rsa): <ENTER>
Enter passphrase (empty for no passphrase): <PASSPHRASE>
Enter same passphrase again: <PASSPHRASE>
Your identification has been saved in /home/dinomite/.ssh/id_rsa.
Your public key has been saved in /home/dinomite/.ssh/id_rsa.pub.
The key fingerprint is:
a3:93:8c:27:15:67:fa:9f:5d:42:3a:bb:9d:db:93:db [email protected]

Simplemente presione Intro donde se indique e ingrese una frase de contraseña cuando se le solicite; idealmente, esto es diferente de su contraseña de inicio de sesión habitual tanto en el Host actual como en los que utilizará SSH.

A continuación, debe copiar la clave que acaba de generar al Host que desea SSH a. La mayoría de las distribuciones de Linux tienen una herramienta ssh-copy-id por hacer esto:

claudius:~$ ssh-copy-id caligula.dinomite.net
Now try logging into the machine, with "ssh 'caligula.dinomite.net'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

Si su distribución no tiene eso, entonces debe copiar la clave al Host de destino y agregarla al (posiblemente existente) .ssh/authorized_keys expediente:

claudius:~$ scp .ssh/id_dsa.pub caligula.dinomite.net:
id_dsa.pub                                    100% 1119     1.1KB/s   00:00
claudius:~$ ssh caligula.dinomite.net
Last login: Sat May  9 10:32:30 2009 from claudius.csh.rit.edu
Caligula:~$ cat id_dsa.pub >> .ssh/authorized_keys

Finalmente, para obtener el máximo beneficio de las claves SSH, querrá ejecutar un agente SSH. Si usa un entorno de escritorio (Gnome, KDE, etc.), simplemente al cerrar sesión y volver a iniciarlo se iniciará un agente SSH para usted. Si no, puede agregar lo siguiente a su archivo Shell RC (.bashrc, .profile, etc.):

SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
    eval `$SSHAGENT $SSHAGENTARGS`
trap "kill $SSH_AGENT_PID" 0
fi
1
Drew Stephens

Esto pretende ser una lista de verificación. Si se sigue punto por punto, se deben cubrir las trampas más comunes para los inicios de sesión sin contraseña. La mayoría de estos puntos se mencionan en otra parte; Esta es una agregación.

Debe haber un ~/.ssh directorio chmod 700 en cada máquina de la cuenta que originará o recibirá las conexiones.

La clave (privada) se debe generar sin una frase de contraseña, o se puede iniciar un agente que contendrá una versión descifrada de una clave que contenga una frase de contraseña para que los clientes la utilicen. Inicie el agente con ssh-agent $Shell. Es el $Shell parte que me llevó un tiempo encontrar. Consulte la página del manual, ya que hay varios detalles si desea utilizar un agente.

No olvide que, de manera predeterminada, las versiones recientes de sshd no aceptan claves débiles (DSA de <2048 bits).

Lo siguiente debe hacerse en la máquina del lado del cliente para originar una conexión.

  1. Su clave privada debe colocarse en ~/.ssh/id_rsa o ~/.ssh/id_dsa según sea apropiado. Puede usar otro nombre, pero luego debe incluirse en una opción -i en el comando ssh en la máquina de origen para indicar explícitamente la clave privada.

  2. Su clave privada debe ser chmod 600.

  3. Comprueba que tu carpeta de inicio es chmod 700.

Ahora para permitir que una máquina recibir una solicitud. Un modelo común es cuando un administrador le da acceso a una máquina que no es de su propiedad (como el alojamiento web compartido). Por lo tanto, la idea con ssh es que ofrezca su clave pública a quien le esté dando la cuenta. Es por eso que generalmente no coloca claves privadas en la máquina que recibe las solicitudes. Pero, si desea que esta máquina también haga ssh salientes, debe tratarla como una máquina de origen con los pasos anteriores.

  1. Su clave pública debe colocarse en un archivo llamado ~/.ssh/authorized_keys bajo la cuenta que recibir las conexiones. Aquí también puede colocar otras claves que pueden conectarse a través de esta cuenta. Una cosa particularmente complicada si está en vi y pegando la clave en el archivo desde el búfer de pegado en PuTTY es esta: la clave comienza con un "ssh-". Si no está en modo de inserción, la primera "s" pondrá vi en modo de inserción y el resto de la clave se verá bien. Pero te perderás una "s" al comienzo de la clave. Me llevó días encontrar eso.
  2. Me gusta chmod 600 ~/.ssh/authorized_keys. Debe ser al menos g-w.
  3. Ahora, debe tener la huella digital del host agregada al caché. Vaya a la máquina A y ssh a la máquina B manualmente. La primera vez, recibirá una consulta como "¿Desea agregar ... al caché de claves del host?". Si está tratando de obtener la automatización (como un script) para usar este inicio de sesión, debe asegurarse de que el cliente ssh que usa la automatización no reciba este mensaje.
1
Vic K

Aquí hay buenos consejos, así que no lo repetiré. Una vez que haya configurado un servidor para permitirle iniciar sesión con claves, puede configurar otros para que hagan lo mismo con este revestimiento:

remote=server1 server2 server3 server4
for r in $remote; do echo connecting to $r; tar czf - ./.ssh/id*.pub ./.ssh/authorized_keys2 ./.ssh/config | ssh $r "tar zxf -; chmod 700 .ssh" ; done

Simplemente cd a su directorio de inicio, defina la variable remota como uno o varios nombres de servidor y haga un montón a la vez. La contraseña que solicita será su contraseña ssh para el servidor remoto. Por supuesto, puede usar una versión simplificada sin el ciclo for:

tar czf - ./.ssh/id*.pub ./.ssh/authorized_keys2 ./.ssh/config | ssh YOUR_SERVER_NAME_HERE "tar ztvf -; chmod 700 .ssh"

RECUERDE: solo copie sobre sus claves públicas. No desea que sus claves privadas se encuentren en algún servidor donde cualquier persona con Sudo pueda copiarlas y forzar su frase de contraseña.

0
Bruno Bronosky

Como han dicho otros, sus usuarios deben hacer pares de claves para ellos mismos en sus máquinas cliente con ssh-keygen y agregar su clave pública a ~/.ssh/Authorizedkeys en la máquina en la que desean iniciar sesión.

Sin embargo, para obtener información más detallada, recomiendo SSH, The Secure Shell .

0
Neall