Inicio / Wikis / Monografías / SSH con contraseña pública/privada - SSH con contraseña pública/privada

SSH con contraseña pública/privada - SSH con contraseña pública/privada

Monografía creado por Carles Pina i Estany. Extraido de: http://pinux.info
08 de Febrero de 2005

1 - SSH con contraseña pública/privada

El procedimiento está probado con Debian Woody, usando el paquete ssh versión 3.4p1-1 (OpenSSH). En otras distribuciones puede variar un poco todo, pero básicamente será lo mismo.

A la máquina a la cual nos queremos conectar le llamaré servidor, y la máquina que usamos para conectarnos cliente.

En la máquina cliente tenemos que generar el par de llaves: pública y privada. Para hacerlo hacemos:

ssh-keygen -t rsa

y nos pedirá la llave privada. Esa llave puede ser diferente a cualquiera anterior, y tiene que ser difícil. Solo lo tendremos que escribir una vez "al día", a la sesión, etc.

Sólo quien tiene la llave privada puede encriptar el "flujo" para que sea desencriptado por nuestra clave pública residente en el servidor. Esa es una forma que el servidor sabe seguro que somos realmente nosotros quien está conectado a él.

Veremos algo así:

carles@pinux:~$ ssh-keygen -t rsaGenerating public/private rsa key pair.

Enter file in which to save the key (/home/carles/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/carles/.ssh/id_rsa.

Your public key has been saved in /home/carles/.ssh/id_rsa.pub.

The key fingerprint is:

fa:a3:f3:52:ad:2a:bc:fc:f1:a4:96:b4:5e:6c:5b:c4 carles@pinux

(Cuando nos pide el fichero podemos presionar Enter)
Hacemos un chmod -R .ssh para asegurarnos que id_rsa sólo lo podamos leer nosotros (Debian ya pone los permisos de id_rsa bien por defecto).

Hecho eso tenemos que enviar el id_rsa.pub a la máquina servidor y añadirle el contenido en el fichero $HOME/.ssh/authorized_keys. P. ej., en la máquina servidor hacemos:

cat id_rsa.cliente >> $HOME/.ssh/authorized_keys

(o sencillamente con un copiar-pegar en nuestro editor de texto)

Para tener las ideas claras, en authorized_keys tenemos las llaves de quien nos puede conectar a nosotros (si nosotros queremos conectar de servidor a cliente tenemos que hacer el key-gen -t rsa en el servidor y ponerlo en el authorized_keys del cliente.

En el fichero de configuración (/etc/ssh/sshd_config)del servidor tenemos que tener al menos:

Protocol 2PubkeyAuthentication yes

Entonces un /etc/init.d/ssh restart (para que relea el fichero de configuración)y desde cliente podemos hacer ssh servidor, nos pedirá la "passphrase" introducida anteriormente y entraremos en servidor. Si tenemos servidor1, servidor2, servidor3... entraremos en cualquier servidor con la misma "passphrase". Si no hemos puesto nada de "passphrase" podremos entrar en cualquier servidor sin tecler nada (ssh servidor)

Ahora usaremos el ssh-agent y ssh-add para no tener que poner cada vez la "passphrase".

carles@pinux:~$ ssh-agent /bin/bash

Eso lo que hace es ejecutar un /bin/bash pero ssh-agent nos guardará las llaves privadas para los hijos de /bin/bash (todo lo que ejecutemos a partir de ese Bash)

Entonces hacemos:

carles@pinux:~$ ssh-add Enter passphrase for /home/carles/.ssh/id_rsa:

Identity added: /home/carles/.ssh/id_rsa (/home/carles/.ssh/id_rsa)

carles@pinux:~$

A partir de ese momento podemos hacer ssh servidor y entraremos al servidor sin que nos pida ninguna contraseña. Evidentemente tambien funciona scp fichero servidor:~ (para copiar fichero al $HOME del servidor).

Si queremos tener esa capacidad en todo el entorno X, podemos, o bien hacer el ssh-agent /bin/bash despues de arrancar (o de forma automática, etc.) o bien ponemos en nuestro $HOME/.xinitrc algo como:

carles@pinux:~$ cat .xinitrc

ssh-agent /usr/X11R6/bin/icewm

De esa forma, dentro de todo nuestro escritorio/gestor de ventanas tendremos activado el ssh-agent y con un sólo ssh-add añadimos nuestra llave privada.

(En caso que quisieramos que un proceso que no es hijo del ssh-agent tenga acceso a las llaves tendriamos que ponerle las variables de entorno $SSH_AUTH_SOCK y SSH_AGENT_PID hacia el mismo valor que a los hijos de ssh-agent.)

Tambien podemos poner un icono que ejecute:

xterm -T "ssh servidor" -bg black -fg lightgray -e ssh servidor

y de esa forma tenemos con un solo click una xterm en un servidor remoto sin más preocupaciones.

Si nos ausentamos del escritorio y queremos que ssh-agent olvide nuestra llave, hacemos:

carles@pinux:~$ ssh-add -D

All identities removed.

ssh-agent soporta varias identidades y ssh-add tiene más opciones (bloquear las identidades, dar un período de tiempo, etc.) pero lo podéis ver en el man o en la misma ayuda de los programas, ya que para un uso normal no hará falta.
Valora este capítulo:
Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.

Opina sobre este monografía



* Valoración:
* Nombre:
* Correo electrónico:
* Título:
* Comentario:

Wikis relacionados con 'SSH con contraseña pública/privada - SSH con contraseña pública/privada'

SSH (secure shell) es el reemplazo de Telnet y FTP, el problema con estos dos... Más »
Se discuten SSH, SSL, TSL y HTTPS, los protocolos utilizados en la actualidad para intercambiar... Más »
Se discuten SSH, SSL, TSL y HTTPS, los protocolos utilizados en la actualidad para intercambiar... Más »
El principal objetivo de este documento es lograr que el lector adquiera la capacidad de... Más »
En la edición anterior, se explicó las bases de Netfilter/IPTables. En esta segunda entrega, se... Más »
Autor y licencia de 'SSH con contraseña pública/privada - SSH con contraseña pública/privada'
Carles Pina i Estany Extraído de: http://pinux.info

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.
¿Estás seguro de que deseas eliminar este capítulo?