Generalidades
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.
- Asegúrate de reemplazar el usuario por tu usuario de Shell.
- Asegúrate de reemplazar el nombre del servidor con tu servidor DreamHost.
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.
Estas instrucciones también se pueden usar para crear y asignar claves SSH a un usuario admin/root en un Servidor Dedicado.
Paso 1 — Generar la Llave de Emparejamiento
En tu computador personal:
- 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 clic en 'Enter' la clave será creada con el nombre por defecto como 'id_rsa'. 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. Mira 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:
- Da clic 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-copy-id:
- "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."
- Da clic en Enter en tu teclado para continuar.
Enter same passphrase again:
- Da clic en Enter en tu teclado para continuar.
- Cuando hayas terminado, da clic 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_rsa.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.
- 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" asegúrate de ver el comando. El banderín -i debe estar usandose.
/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:
- 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
- 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"
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:
- Confirma la huella digital en tu panel en la página de Llaves de SSH.
- Ingresa 'yes' para continuar.
- Ingresa la contraseña de el usuario de ssh.
Los comandos anteriores crean una nueva carpeta bajo tu usuario de DreamHost llamado /.ssh con permisos 755.
En esa carpera está tu archivo authorized_keys que se acaba de copiar del computador de tu hogar que tiene permisos 644. Ahora debes correr los siguientes comandos para actualizar esos permisos y proteger aún más tus llaves.
[server]$ chmod 700 ~/.ssh [server]$ chmod 600 ~/.ssh/authorized_keys
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 ssh-agent. Inicia el ssh-agent 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/username/.ssh/id_rsa type 1 debug1: identity file /home/username/.ssh/id_rsa-cert type -1
debug1: Offering RSA public key: /home/username/.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 ssh-agent. 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: