Diferencia entre revisiones de «SSH-Agent»

Contenido eliminado Contenido añadido
Sin resumen de edición
Drinibot (discusión | contribs.)
m Bot: Fixing redirects; cambios triviales
Línea 4:
En los siguientes capítulos se presenta una breve introducción a SSH-Agent y por último se especifica la solución de la aplicación práctica.
 
== Introducción ==
 
En cualquier ambiente informático, donde se requiera trabajar con múltiples servidores, es necesario contar con una comunicación segura como SSH. Para conectarse a un servidor remoto, basta con tipear el comando seguido del usuario y host destino, y de la contraseña del usuario remoto en cuestión. Este proceso de login en máquinas remotas puede ser molesto en los casos en que sea necesario realizar conexiones cada poco período de tiempo, debido a que hay que ingresar la contraseña cada vez.
Línea 12:
Con este fin fue creado el ssh-agent, que permite recordar mientras dure la sesión, cada una de las claves privadas del usuario, de modo que él se encargue de realizar la autenticación.
 
== Funcionamiento interno de ssh-agent ==
 
=== Daemon ===
ssh-agent es un programa para la manipulación de claves privadas. La idea es que al inicio de una [[Entorno de escritorio|Xsession]] se ejecute el comando
 
Línea 35:
ssh-agent -k
 
=== Registro de certificados ===
Inicialmente el agente no contiene ningún certificado, los cuáles pueden agregarse mediante el comando ssh-add. Para listar todos los certificados que el agente tiene asignadas, basta ejecutar:
 
Línea 43:
La idea es que el agente se ejecute localmente. Esto permite que los datos de autenticación (certificados privados) no necesiten estar almacenados remotamente. A su vez, las [[Clave (criptografía)|passphrases]] nunca son transmitidas a través de la red. Como el agente no transmite claves privadas, el host remoto envía "desafíos" que necesitan de la clave privada para ser resueltos, y son devueltos a quien lo solicitó.
 
== Uso ==
 
A continuación describimos los pasos necesarios para utilizar discos remotos a través de [[SSH]] y [[GNOME VFS]].
 
=== Creación de claves pública y privada ===
En primer lugar es necesario crear el par de claves pública y privada del usuario en cuestión (cliente). Las claves pueden ser de tres tipos distintos: [[RSA]] para la versión 1 de ssh; y [[DSA]] o RSA para la versión 2. Al momento de la creación de la clave es necesario especificar alguno de estos métodos (en nuestro caso usaremos RSA). Para ello se utiliza el comando:
 
Línea 54:
A continuación, la aplicación nos pedirá el nombre de la clave. En caso de no especificarse ninguno, se guardará con el nombre por defecto: <code>~/.ssh/id_rsa.pub</code> para la clave pública y <code>~/.ssh/id_rsa</code> para la clave privada. El siguiente paso consiste en introducir una passphrase, que será solicitada al usuario cada vez que la clave privada sea utilizada (a menos que usemos ssh-agent).
 
=== Autoriación de clave pública ===
Finalmente es necesario agregar nuestra clave pública (en el directorio home del usuario al que nos conectaremos) al "llavero" de claves autorizadas del servidor. Éste es un archivo denominado <code>~/.ssh/authorized_keys2</code> que se encuentra en el directorio de (home) del [[Espacio de usuario]] (el 2 se debe a que estamos utilizando dicha versión de ssh). Por lo tanto, ejecutamos el comando
 
Línea 61:
que concatena nuestra clave pública al archivo antes mencionado. Una vez hecho lo anterior, no se pedirá más la clave del usuario remoto para realizar la conexión ssh, sino que por el contrario será solicitada la passphrase (indicándonos que se está utilizando la clave privada).
 
=== Conectar gnome-vfs ===
Si en este momento realizamos una conexión a un servidor remoto utilizando gnome-vfs, también será solicitada la passphrase. Para realizar dicha conexión, debemos ejecutar (desde el menú de ubuntu) ''Places → Connect to server''. Se abrirá un cuadro de diálogo que nos pide ciertos datos, como se muestra en la siguiente figura:
 
[[ImageArchivo:Screenshot-Connect to Server.png]]
 
Entre éstos se encuentra:
* Tipo de conexión: Elegiremos ssh.
* Servidor: ingresaremos la IP del servidor o su nombre si es que está registrado en <code>/etc/hosts</code>.
* Usuario: nombre del usuario remoto
* Puerto: el puerto utilizado para ssh (por defecto puerto 22).
 
Desde este dialogo se puede conectar a cualquier host remoto mediante varios protocolos. Si se esta trabajando en una LAN y no se esta seguro a cual host se debe conectar se puede seleccionar el botón ''Browse Network'' y ver que servidores están disponibles en la red.
Línea 78:
Esta acción nos dejará un icono en el escritorio, que nos lleva directamente al disco del servidor.
 
Lo que GNOME ha realizado hasta aquí es tomar el host remoto y montarlo en el escritorio. Ahora se puede abrir esta carpeta y manipular archivos y directorios como si estuviera en la máquina local. Se tiene la opción de setear password-less authentication vía ssh en cuyo caso [[Introducción a Linux/Escritorio y herramientas GNOME|GNOME]] no preguntará por el password, en otro caso utilizará la característica Keyring para mantener todas las contraseñas remotas en un único lugar. Un aspecto a considerar es la velocidad de la red, puede existir un delay considerable dependiendo de las conexiones de la red.
 
Se pueden tener tantos accesos directos a host remotos como se desee. Cada icono tiene etiquetas que recuerdan con que protocolo se está conectado, por lo que se puede tener múltiples conexiones diferentes a una misma máquina.
Línea 84:
Otra característica útil es que con múltiples accesos directos se pueden arrastrar los archivos entre dos host remotos alejados sin importar cuales son los protocolos que utilizan. Pero GNOME no solo coloca un icono en el escritorio, la meta es que esta transparencia se aplique a todas las aplicaciones. Las aplicaciones GNOME aprovechan esto mediante el dialogo de Archivo.
 
=== Validando una sola vez ===
La primera vez que entremos, nos pedirá la passphrase, y la recordará durante toda la sesión. A primera vista esta parece la solución al problema planteado, pero en el caso de que existan conexiones a más de un servidor, la passphrase será solicitada una vez por cada servidor.
 
Línea 93:
que por defecto carga en el agente las claves privadas ubicadas en <code>~/.ssh/</code>. De este modo solo debemos ingresar la passphrase cuando accedamos al primer servidor.
 
Este hecho no resulta 100% transparente (hay que abrir una consola y ejecutar el comando ssh-add), por lo que preferimos que la passphrase sea solicitada al inicio de la sesión, y no durante la misma. Para esto debemos hacer que el ssh-add se ejecute automáticamente luego de iniciar la sesión, por lo que en el menú de ubuntu, ''Preferences → Sessions → Startup Programs'', agregamos dicho comando <code>/usr/bin/ssh-add</code> con la prioridad más baja.
 
En conclusión, cada vez que iniciemos la sesión, debemos ingresar la passphrase por única vez y accederemos a los servidores en forma transparente.
 
== Otras Características ==
 
Una característica interesante del ssh-add, es que permite bloquear el agente con una contraseña para que nadie abuse de él a menos que conozca dicha clave. Esto puede ser muy útil cuando no se apaga la máquina o cuando no se cierra la sesión durante la noche.
Línea 103:
Para bloquearlo se ejecuta dicho comando con el switch "x", y se desbloquea con "X".
 
== Veáse también ==
 
[[SSH]] Secure Shell
 
== Enlaces externos ==
* [http://gnomejournal.org/article/12/working-with-remote-resources Working with Remote Resources], The GNOME Journal
* [http://www.escomposlinux.org/lfs-es/blfs-es-6.0/gnome/gnome-keyring.html GNOME keyring], una implementación nativa de GNOME, equivalente a ssh-agent.