Cómo configurar inicio de sesión sin contraseña en Mac OS y Linux

Visión General

Una vez configures tu usuario Shell e intentes iniciar sesión vía SSH, vas a encontrar que debes ingresar tu contraseña cada vez. Si quieres evitar ingresarla todas las veces, puedes configurar un Inicio de Sesión sin Contraseña. De esta manera, podrás iniciar sesión automáticamente sin ingresar la misma.

En este artículo, 'usuario@server.dreamhost.com' es usado como ejemplo de inicio de sesión.

Las siguientes son instrucciones de cómo configurar un Inicio de Sesión sin Contraseña para cualquier Unix, Linux, OSX, o máquina Cygwin.

PASO 1 – Generar la llave de emparejamiento

En tu computador personal:

  1. Genera una llave privada RSA usando ssh-keygen (a menos que ya hayas creado una).
    • Si estás usando Linux o Mac OS X, abre tu terminal y corre el siguiente comando con tu usuario:
    [local]$ ssh-keygen -t rsa
    Esto crea una llave de emparejamiento pública/privada del tipo (-t) rsa.
    Generating a public/private rsa key pair.
    Enter the file in which you wish to save they key (i.e., /home/username/.ssh/id_rsa).
    

    Si das click en 'Enter' la clave será creada con el nombre por defecto como 'id_rsa'. Tu puedes nombrarlo de la forma que quieras, pero si seleccionas el nombre por defecto, necesitarás dejarle saber a tu cliente SSH sobre el nuevo nombre de la llave. Ve el paso #3 para más detalles.

    También, si seleccionas usar un nombre personalizado, asegúrate de especificar el camino completo a tu directorio de ssh. Si no lo haces, la nueva llave de emparejamiento es creada en el directorio que estás corriendo el comando.

    Una vez la llave de emparejamiento es creada, deberás ingresar los siguientes ítems:
  2. Da click a Enter en tu teclado para continuar.
    Enter a passphrase (leave empty for no passphrase).

    No necesitas entrar una frase de contraseña, pero es altamente recomendado pues protege tu clave si ésta es comprometida. Si pasa, la persona necesitará la frase de contraseña para desbloquearla.

    La excepción a esto es si estas corriendo un proceso automatizado como un cron job. Ahí deberás dejar la contraseña fuera. Desde  ssh.com:

    "Generalmente todas las claves usadas para accesos interactivos deben tener una frase de contraseña. Las claves que no las tengan son útiles para procesos completamente automatizados."
  3. Da click en Enter en tu teclado para continuar.
    Enter same passphrase again:
  4. Da click en Enter en tu teclado para continuar.
  5. Cuando hayas terminado, da click en Enter en tu teclado.
    El siguiente mensaje aparecerá:
    Your identification has been saved in /home/username/.ssh/id_rsa
    Your public key has been saved in /home/username/.ssh/id_sra.pub
    
    The key fingerprint is:
    ar:bc:d3:9e:g3:1f:63:6f:6b:32:2e:97:ee:42:e1:be username@server.dreamhost.com
    
    The key’s randomart image is:
    
    +--[ RSA 2048]----+
    | ..+**B.o++o     |
    |  . o+==o. o     |
    |    . .oo.=      |
    |      . +E+ .    |
    |        S .      |
    |                 |
    |                 |
    |                 |
    |                 |
    +-----------------+
    

PASO 2 – Copiar la llave pública que acabas de crear en tu computador personal a tu servidor DreamHost

Linux

Cuando estas usando Linux tienes dos opciones: Puedes usar ssh-copy-id o las instrucciones de abajo para Mac OS X. Ambos trabajan copiando la llave pública local a tu servidor DreamHost.

  1. Copia la llave pública de tu computador local a tu servidor DreamHost corriendo el siguiente comando en tu máquina Linux:
    [local]$ ssh-copy-id -i ~/.ssh/id_rsa.pub username@server.dreamhost.com
    

    Si obtienes el mensaje de error: "Too many arguments" (Demasiados argumentos) asegúrate de ver el comando. El banderín -i debe estar usandose.

  2. Este comando responde con lo siguiente:
    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed == if you are prompted now it is to install the new keys
    username@server.dreamhost.com's password:
    
  3. Ingresa tu contraseña y verás lo siguiente:
    Number of key(s) added: 1

    Ahora trata de iniciar sesión en la máquina, con ssh username@server.dreamhost.com y asegúrate que las llaves que querías fueron agregadas.

Comando en Mac OS X

  1. Corre el siguiente comando para copiar la llave pública de tu computador local a tu servidor DreamHost.
    [local]$ cat ~/.ssh/id_rsa.pub | ssh username@server.dreamhost.com "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
    
    • Este comando asume que NO tienes un directorio /.ssh dentro de tu usuario de DreamHost. Este comando crea el directorio /.ssh por tu en el servidor DreamHost.
    • Si ya tienes un directorio /.ssh en tu servidor web, solo elimina la sección 'mkdir ~/.ssh;' manteniendo las doble comillas. Por ejemplo:
      [local]$ cat ~/.ssh/id_rsa.pub | ssh username@server.dreamhost.com "cat >> ~/.ssh/authorized_keys"
  2. Este comando responde a lo siguiente:
    The authenticity of host 'server.dreamhost.com (208.113.136.55)' can't be established.
    RSA key fingerprint is 50:46:95:5f:27:c9:fc:f5:f5:32:d4:3a:e9:cb:4f:9f.
    Are you sure you want to continue connecting (yes/no)? yes
    
    Warning: Permanently added 'server.dreamhost.com,208.113.136.55' (RSA) to the list of known hosts.
    
    username@server.dreamhost.com's password:
    
  3. Puedes confirmar la huella digital en tu panel en la página de llaves de SSH.
  4. Ingresa 'yes' para continuar.
  5. Ingresa la contraseña de el usuario de ssh.

Los comandos de arriba crean una nueva carpeta dentro de tu usuario de Dreamhost llamado /.ssh con permisos 700..

En esa carpeta está tu archivo authorized_keys el cual fue copiado de tu computador local con los permisos 600.

PASO 3 – Agregar tu clave personalizada a tu cliente SSH

Este paso solamente es necesario si le diste un nombre personalizado a tu clave en el PASO #1.

Cuando crear una llave de emparejamiento, tu escoges cómo nombrarla. Por ejemplo, el nombre por defecto es 'id_rsa' pero tu puedes nombrarla como quieras mientras la creas. Sin embargo, si escoges un nombre personalizado, necesitarás hacerle saber a tu cliente de SSH sobre esa nueva clave.

Esto lo haces iniciando un agente de SSH. Inicia el agente de SSH corriendo el siguiente comando. Asegúrate de usar la comilla negra ` y no una sola comilla - esta comilla negra es usualmente en la parte superior izquierda de tu teclado en la tecla tilde ~.

[local]$ eval `ssh-agent`

Puedes correr el siguiente comando (asegúrate de cambiar customkey_rsa al nombre de tu llave):

[local]$ ssh-add ~/.ssh/customkey_rsa

Puedes confirmar si fué agregado corriendo el comando:

[local]$ ssh-add -l
2048 aa:42:d4:46:81:43:65:7f:4e:53:94:5f:2f:0d:fd:bd customkey_rsa (RSA)

Este responderá con tu huella digital de clave privada. Puedes confirmar esa huella digital generando una huella digital de un archivo de llave pública personalizado.

[local]$ ssh-keygen -l -f customkey_rsa.pub
2048 aa:42:d4:46:81:43:65:7f:4e:53:94:5f:2f:0d:fd:bd user@server (RSA)

PASO 4 – Confirmar la conexión SSH

Si todo está configurado correctamente, debes ya ser capaz de acceder a tu cuenta de DreamHost a través de SSH sin contraseña. Corre este comando en tu computador local donde creaste la llave original de emparejamiento.

[server]$ ssh username@server.dreamhost.com

Deberás poder ser capaz de iniciar sesión sin usar contraseña.

Especificar una llave de emparejamiento para usar con SSH

Por defecto, tu cliente usará la identidad (clave privada) llamada ~/.ssh/id_rsa. Sin embargo, si has creado más de una llave, puedes especificar cual de esas usar cuando te conectes, usando la bandera -i. Por ejemplo:

[server]$ ssh -i ~/.ssh/customkey username@server.dreamhost.com

Confirmar la identidad usada

Puedes confirmar la identidad (llave privada) usada si usas -v.

[server]$ ssh -v username@server.dreamhost.com

Esto mostrará muchos comandos, pero vas a buscar por estas líneas para confirmar la identidad que estás usando.

debug1: identity file /home/user/.ssh/id_rsa type 1
debug1: identity file /home/user/.ssh/id_rsa-cert type -1
debug1: Offering RSA public key: /home/user/.ssh/id_rsa

En este ejemplo, id_rsa key esta siendo usado.

¿Que pasa cuando tengo más de una llave de emparejamiento?

Si tienes más de una llave, necesitarás agregarlas todas en el agente de SSH. Por ejemplo, si tienes una llave id_rsa en adición a una llave personalizada, asegúrate de agregar ambas usando ssh-add (como se muestra arriba). Esto asegurará que la línea 'Offering RSA public key' anterior muestre la llave correcta cuando se conecta.

Solución de problemas

Si no te estás logueando automáticamente, mira el siguiente artículo para ver posibles soluciones:

Ver también

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.