SSH keys (Español)

From ArchWiki
Revision as of 01:34, 9 January 2011 by Acvkaze (Talk | contribs) (Created page with "Category:Networking (Español) Category:Security (Español) Category:HOWTOs (Español) ==¿Que son las Llaves SSH?== Al usar una llave SSH ( una publica y una privad...")

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

¿Que son las Llaves SSH?

Al usar una llave SSH ( una publica y una privada para ser presisos), usted puede conectarse facilmente a un servidor, o a multiples servidores, sin tener que ingresar un password cada vez.

Es posible configurar tus llaves sin una frase-de-paso, sin embargo eso seria imprudente, si alguien obtiene su clave, podria usarla. Esta guia describe como configurar su sistema para que las llaves-de-paso sean recordadas de forma segura.

Generando las llaves SSH

Si todavia no tiene OpenSSH instalado, instalelo ahora ya que no viene por defecto en Arch.

     #pacman -S openssh

Las llaves pueden ser generadas corriendo el comando ssh-keygen como usuario

$ ssh-keygen -b 1024 -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/mith/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/mith/.ssh/id_dsa.
Your public key has been saved in /home/mith/.ssh/id_dsa.pub.
The key fingerprint is:
x6:68:xx:93:98:8x:87:95:7x:2x:4x:x9:81:xx:56:94 mith@middleearth

Le pedira por una locacion (debe dejar la que le muestre por defecto), sin embargo la frase-de-páso es el punto importante! Debe ser consiente del criterio que hace una buena frase-de-paso.

¿Que acabamos de hacer? Generamos un par de llave publica/privada dsa(Template:Codeline) de 1024 bits de largo(Template:Codeline) con el comando ssh-keygen.

Si quiere crear un par de llave RSA en vez de DSA solo debe usar Template:Codeline ( no debe especificar el largo "-b" por defecto el largo para RSA es de 2048 y es suficiente)

Note: NOTA: Una llave DSA debe ser exactamente de 1024 bits por especificacion. Una llave RSA puede ser entre 768 bits y 4096 bits.

Copiando las llaves al servidor remoto

Ahora que hemos generados las llaves, necesitamos copiarlas al servidor remoto. Por defecto, para Openssh, la llave publica necesita ser concatenada dentro de Template:Filename.

$ scp ~/.ssh/id_dsa.pub mith@metawire.org:

Esto copia la llave publica (Template:Filename) al servidor remoto via Template:Codeline ( notesen los Template:Codeline al final de la direccion del servidor). el archivo acabara en el directorio home, pero se puede especificar la dereccion que uno desee.

Inmediatamente en el servidor remoto, necesitamos crear el directorio Template:Filename, en el caso de no existir, y concatenar la llave al archivo Template:Filename:

$ ssh mith@metawire.org
mith@metawire.org's password:
$ mkdir ~/.ssh
$ cat ~/id_dsa.pub >> ~/.ssh/authorized_keys
$ rm ~/id_dsa.pub
$ chmod 600 ~/.ssh/authorized_keys

Los utlimos dos comandos eliminan la llave publica del servidor ( la cual ya no se necesita), y otorgan los permisos correctos al archivo Template:Filename.

Si se desconecta del servidor, e intenta reconectar, este le deberia preguntar por la frase-de-paso de la llave:

$ ssh mith@metawire.org
Enter passphrase for key '/home/mith/.ssh/id_dsa':

Si no le perminte acceder con la llace, vuelva a vereficar los permisos del archivo Template:Filename.

Tambien verifique los permisos del directorio Template:Filename, los cuales deberian NO dejar escribir para 'group' y 'other'. Ejecute el siguiente comando para desabilitar los permisos de escritura para 'group' y 'other' en el directorio Template:Filename:

$ chmod go-w ~/.ssh

Recuerde la frase-de-paso

Ahora puede acceder al servidor usando la llave en vez del password, pero como se facilita el asunto, ¿ aun necesita entrar la frase-de-paso? La respuesta es usar un agente SSH, ¡un programa que recuerda las frases-de-paso de sus llaves! Hay muchas herramientas disponibles para esto, solo debe conocerlas y elegir la que le paresca mas apropiada a sus necesidades.

Agente SSH

ssh-agent el el agente por defecto que incluye OpenSSH.

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-vEGjCM2147/agent.2147; export SSH_AUTH_SOCK;
SSH_AGENT_PID=2148; export SSH_AGENT_PID;
echo Agent pid 2148;

Cuando ejecuta Template:Codeline, se mostrara en pantalla las variables de entorno que seran usadas. Para hacer uso de estas variables, ejecute Template:Codeline.


$ eval `ssh-agent`
Agent pid 2157

Puede agregarlo al archivo Template:Filename para que se ejecute cada vez que inicia sesion:

# echo 'eval `ssh-agent`' >> /etc/profile

Note las forma correcta de poner las comillas, las externas son simples, mientras que dentro se usan las invertidas.

Ahora que el Template:Codeline esta corriendo, necesitamos decirle que tenemos una llave privada, y donde esta.

$ ssh-add ~/.ssh/id_dsa
Enter passphrase for /home/user/.ssh/id_dsa:
Identity added: /home/user/.ssh/id_dsa (/home/user/.ssh/id_dsa)

Nos preguntara por nuestra frase-de-paso, la ingresamos, y es todo. Ahora puede ingresar al servidor remoto sin tener que entrar su password.

La unica desventaja es que cada nueva instancia de Template:Codeline necesita ser ejecutada por acada consola (shell) que se abra, esto significa que se debe correr Template:Codeline cada vez en cada consola. Hay una solucion para esto, con un programa o mas bien un script llamado keychain que cubrira las siguientes sesiones.


Usando GnuPG Agent

El agente GnuPG, es distribuido en el paquete {Package Official|gnupg2}}, posee una emulacion del agente de OpenSSH. si usas GPG deberia considerar usar este agente para mantener cuidadas sus llaves. De otra forma puede interesarle el dialogo de entrada de PIN que provee que gestiona las frases-de-paso, es diferente al de Keychain.

Para empezar a usar el agente GPG primero hay que correr Template:Codeline con las opciones Template:Codeline. Por ejemplo (no olvide darle los permisos de ejecucion):

Template:File

Una vez que gpg-agent este corriendo puede usar Template:Codeline para verificar las llaves, justo como lo hizo con ssh-agent. La lista de las llaves aprobadas se guarda en el archivo Template:Filename. Cuando su calve es aprovada obtendra un dialogo de entrada de PIN pidiendo la frase-de-paso ( si es necesirio). Puede controlar el almacenamiento de las frases-de-entrada en el archivo Template:Filename. El siguente ejemplo hara que gpg-agent mantenga las llaves por 3 horas:

 # Cache settings
 default-cache-ttl 10800
 default-cache-ttl-ssh 10800

Otra configuracion util para este archivo es incluir un programa para la entrada del PIN (GTK, QT or ncurses version):

 # Environment file
 write-env-file /home/username/.gnupg/gpg-agent.info
 
 # Keyboard control
 #no-grab
   
 # PIN entry program
 #pinentry-program /usr/bin/pinentry-curses
 #pinentry-program /usr/bin/pinentry-qt4
 pinentry-program /usr/bin/pinentry-gtk-2