Instalar un servidor SSH en linux
Nota: Ésta es la vista de impresión del Manual de referencia completo en una sola página. Si lo prefiere puede encontrar la versión original aquí.
1. Objetivos
Un servidor SSH nos ofrece entre otros los siguientes servicios:
- Establecer conexiones tipo telnet con un servidor, pero de forma segura (la información va encriptada).
- Utilizar el comando SCP para transmisión de ficheros, algo parecido a lo que hacemos con un ftp, pero de forma segura, ya que utiliza el protocolo ssh.
- Cuando disponemos de un servidor X (desde una maquina Linux), permite ejecutar aplicaciones gráficas instaladas en el servidor de forma remota. Por ejemplo, nos permite ejecutar el fwbuilder que esta en el cortafuegos de forma que vemos en nuestra maquina el interfaz de fwbuilder sin que lo tengamos instalado
Las características de nuestra instalación serán las siguientes:
- Utilizaremos SSH2, y configuraremos el servidor para que no permita SSH1.
- Para poder establecer la conexión, sera imprescindible utilizar la clave ssh (passphrase) y no permitiremos que se utilice la clave que el usuario tiene en el servidor.
- No permitiremos que el usuario root se pueda conectar. Si necesitamos entrar como root, primero debemos establecer la conexión ssh como un usuario normal, y luego a través de un “su -” convertirnos en root.
2. Instalar OpenSSH
Los ejemplos están hechos con Debian Sarge. De todas formas, el autor ha hecho esto mismo en un RedHat8 y el proceso es idéntico.
Tenemos distintas opciones a la hora de instalar el paquete:
- www.openssh.org descargar el paquete e instalarlo.
- En Debian ejecutar un “apt-get install ssh”
- En Fedora y el resto de distribuciones, utilizar el programa de gestión de paquetes para escoger e instalar el paquete ssh.
La instalación es así de simple. :)
3. Configurar OpenSSH
Una vez finalizada la instalación, ssh queda configurado. El servicio pasa a estar controlado a través del demonio sshd.
Para arrancar el servicio:
/etc/init.d/ssh start
Para detener el servicio:
/etc/init.d/ssh stop
Para modificar la configuración necesitamos abrir y modificar el fichero /etc/ssh/sshd_config.
Esto es lo que hay que cambiar:
# el usuario root no se puede conectar a través de ssh
PermitRootLogin no
RSAAuthentication yes
PubkeyAuthentication yes
RhostsAuthentication no
hostsRSAAuthentication no
HostbasedAuthentication no
# Para arrancar en remoto aplicaciones graficas
X11Forwarding yes
PasswordAuthentication no
PermitEmptyPasswords no
#Con esta opción, solo permite validación con la “passphrase” ssh
ChallengeResponseAuthentication no
4. Funcionamiento de SSH
En el ejemplo que vemos en esta imagen, estamos intentando establecer una conexión ssh con el servidor, pero a la hora de introducir la passphrase le damos enter y no introducimos nada.
No nos da la opción de probar con la clave que tenemos como usuario en el servidor, y nos cierra la conexión.

Al establecer la conexión se ha dado cuenta de que el usuario pedro tiene la cable publica de ssh configurada, y ha permitido el intento de conexión, aunque luego este intento ha fracasado al no introducir la passphrase.
Si un usuario que no tiene configurada la clave publica en el servidor intenta conectarse el servidor no permite la conexión.

Utilizando SCP, podemos copiar ficheros desde nuestra maquina al servidor y viceversa.
Esto es muy cómodo a la hora de hacer copias de seguridad. Por ejemplo, en el caso en que tengamos un servidor en la DMZ y no tengamos sistema de backup en esa maquina.
Generalmente, la red interna dispone de sistemas de backup, con lo cual simplemente deberíamos hacer un scp para traernos los ficheros a copiar de la DMZ a la red interna y poder así copiarlos en el backup interno.

5. Generando las claves SSH
Para poder utilizar SSH, primero debemos generar las claves. Al generarlas, obtenemos dos ficheros, uno con el contenido de la clave privada, y el otro con el contenido de la clave publica.
En el servidor SSH pondremos nuestra clave publica, y la clave privada deberemos guardarla y tendremos cuidado de no dársela a nadie.
De esta forma, si tuviéramos 5 servidores a gestionar, configuraríamos nuestra clave publica en los 5, y a través de la clave privada configurada en nuestra maquina, accederíamos a todos los servidores sin ningún problema.
Generando las claves en Linux
Para crear las claves, tenemos que estar validados como el usuario que las va a utilizar. Si las generamos como root, solo el root podrá utilizarlas.
ssh-keygen -t rsa
aceptamos la carpeta que nos propondrá dentro del home ~/.ssh/id_rsa
Luego introducimos la clave ssh o paraphrase que nos pide. Conviene que esta clave sea distinta a la que tenemos como usuarios en el servidor.
Tras hacer esto, genera dos ficheros:
- Clave privada: ~/.ssh/id_rsa
- Clave publica: ~/.ssh/id_rsa.pub
Luego hay que modificar los permisos de la carpeta ssh:
chmod 755 ~/.ssh.

Generando claves en Windows
Con un PC Windows podemos ser clientes de ssh, para lo cual utilizaremos putty.
Putty es un cliente ssh creado por los de OpenSSH para sistemas windows. Permite SSH1 y SSH2, pero no solo eso, también nos permite entre otras cosas utilizar un programa llamado PSCP que nos da la funcionalidad de scp.
http://www.openssh.org/windows.html
Podemos descargar Putty directamente desde esta pagina: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Putty no es un solo programa, sino un conjunto de programa. Uno de ellos, el llamado puttygen.exe es el que nos permite generar las claves.

Le
diremos que genere una clave SSH2-RSA de 1024 bits.
Dejaremos como están las opciones por defecto.
Pulsaremos el botón “Generate” y moveremos el ratón sobre la ventana, así el programa ira generando la clave.

Una vez hecho esto, nos pide que introduzcamos la passphrase . Esta Passphrase es la clave que utilizaremos al conectarnos vía ssh con estas claves. Al conectarnos, no utilizaremos la clave que tenemos en el servidor como usuarios, sino que utilizaremos esta passphrase.

Ahora solo nos falta guardar las claves. Recordad que la clave pública es la que dejaremos en los servidores, y no hay miedo de perderla, pero la clave privada debe estar bien guardada y solo nosotros debemos tener acceso a ella.
La clave privada la guarda en formato ppk, un formato que utiliza el putty.
Podemos guardar la clave publica en un fichero, o copiarlo de la ventana del putty y pegarla en un fichero de texto.
Copiar la clave publica en el servidor
Nos falta copiar la clave publica en el servidor al que queremos conectarnos. Hay que copiarla en el fichero ~/.ssh/authorized_keys del servidor.
Esto es importante. Es imprescindible copiar y pegar bien el texto, ya que un error en un caracter nos hará imposible establecer la conexión.
Si hemos generado la clave en Linux, tenemos que copiar el contenido del fichero ~/.ssh/id_rsa.pub generado en nuestra maquina al fichero ~/.ssh/authorized_keys del servidor.
Si hemos generado la clave con puttygen.exe, copiamos el contenido de la clave de la ventana del programa y la pegamos en el fichero ~/.ssh/authorized_keys del servidor.
Si en el servidor no existe el fichero ~/.ssh/authorized_keys lo creamos.
6. Créditos y licencia
Este manual se ha generado utilizando software libre:
- The Gimp para las imágenes ( http://www.gimp.org/)
- Debian Sarge como sistema operativo, (http://www.debian.org/)
- OpenSSH, (http://www.openssh.org/)
Las fuentes de datos consultadas para elaborar el documento son las siguientes:
Autor:
Pedro Arreitunandia
Fecha:11 mayo del 2005
Licencia: Creative Commons by-sa/2.0