Instalación de OpenSSH Server 2013-07-20

Tutorial de instalación paso a paso de servidor OpenSSH (Open Secure Shell) en Debian Wheezy

En este nanotutorial vamos a aprender a instalar el servidor OpenSSH, así como algunos aspectos de seguridad que debemos tener en cuenta.

Instalación de OpenSSH Server

El protocolo ssh permite una autenticación transparente mediante el juego de llaves públicas/privadas. Al utilizar una llave ssh podemos conectarnos a un servidor ssh remoto sin necesidad de ingresar una contraseña.

La llave privada id_rsa será necesaria para autenticar nuestro usuario con el servidor, esta reside en nuestro equipo local. La llave pública id_rsa.pub reside en el equipo remoto, esta fue manualmente agregada al archivo authorized_keys.

Vamos a agregar nuestra llave pública id_rsa.pub en los equipos remotos a los cuales necesitamos autenticarnos en el archivo autorized_keys en cada uno de ellos.

Actualizar la paqueteria

Abre una terminal y corre el siguiente comando:

sudo apt-get update

Instalar el servidor OpenSSH

En una terminal vamos a ejecutar el siguiente comando:

sudo apt-get install openssh-server

Instalar el servidor OpenSSH

Crear una llave ssh

Para crear una juego de llaves vamos a ejecutar el siguiente comando en el equipo local (es decir el equipo desde el cual vamos a autenticarnos a los equipos remotos) seguido de la tecla Enter en todas las preguntas que nos haga posteriormente la ejecución de este comando:

ssh-keygen

Crear una llave ssh

Autorizar llave ssh

Para autorizar la llave recien creada en un equipo remoto debemos copiar nuestra llave pública mediante el cliente de ssh. Para esto debemos conocer la dirección IP ó dominio de el servidor, el usuario mediante el cual haremos la autenticación en el equipo remoto y la contraseña del mismo.

### Copiar llave publica

Para copiar la llave pública en el equipo remoto vamos a ejecutar el siguiente comando, el cliente de ssh nos consultará si queremos proceder1:

scp ~/.ssh/id_rsa.pub <usuario>@<ip>:.

Copiar llave publica

### Iniciar sesión en el equipo remoto

Ahora que hemos copiado nuestra llave pública, debemos iniciar sesión en el equipo remoto para configurar la autorización.

Para iniciar sesión en el equipo remoto ejecutaremos el siguiente comando:

ssh <usuario>@<ip>

### Agregar la llave pública al archivo authorized_keys

Una vez iniciada la sesión, vamos a crear el directorio .ssh (el punto no es un error) en el directorio de inicio2 del usuario remoto.

Para crear el directorio ejecutaremos el siguiente comando:

mkdir ~/.ssh

Agregar la llave publica al archivo authorized keys

Ahora vamos a anadir la llave pública al archivo authorized_keys con el siguiente comando:

cat ~/id_rsa.pub » ~/.ssh/authorized_keys

Probar la llave ssh autorizada

Ahora que tenemos una llave ssh autorizada en el equipo remoto, vamos a probar que esta funciona. Si esta funciona no deberá solicitarnos la contraseña al iniciar una sesión ssh en el equipo remoto.

Nuevamente iniciamos sesión con el comando:

ssh <usuario>@<ip>

Probar la llave ssh autorizada

Si este punto no funciona, verifica cada uno de los pasos anteriores.

Deshabilitar acceso root

El usuario root tiene todos los privilegios en un sistema GNU/Linux por lo tanto es importante restringir el acceso remoto para este usuario. Al deshabilitar el acceso remoto del usuario root, siempre podremos acceder con los demás usuarios del sistema e iniciar sesión con el root (ya adentro) mediante el comando su.

Deshabilitar acceso root

Para deshabilitar el acceso necesitamos cambiar un parámetro dentro de la configuración del servidor OpenSSH, para esto debemos modificar el archivo /etc/ssh/sshd_config.

Para editar el archivo sshd_config vamos a utilizar el editor nano mediante el siguiente comando:

sudo nano /etc/ssh/sshd_config

El parámetro a modificar es PermitRootLogin a no y guardamos el archivo:

PermitRootLogin no

Si no conoces este editor, te invitamos a conocerlo en este nanotutorial

Deshabilitar autenticación por contraseña

Una buena politica de seguridad es el deshabilitar el uso de contraseñas por completo. Esto obligará a que cada usuario que necesite iniciar sesion en el servidor remoto posea una llave autorizada. Con esto también evitamos que los usuarios utilicen claves no seguras que sean potencialmente vulnerables a ataques de fuerza bruta.

Para deshabilitar la autenticacion de usuarios a través de contraseña, nuevamente vamos a editar el archivo /etc/ssh/sshd_config.

sudo nano /etc/ssh/sshd_config

Esta vez vamos a modificar el parámetro PasswordAuthentication3 a no y guardamos nuevamente el archivo.

PasswordAuthentication no

Reiniciamos el servicio

Para que las configuraciones sean aplicadas necesitamos reiniciar el servicio de OpenSSH con el comando:

sudo service ssh restart

Reiniciamos el servicio

Notas

  1. La primera vez que iniciamos sesión en un equipo remoto mediante ssh, este nos solicitará que confirmemos que dicho equipo es de confianza agregando el fingerprint (huella) a nuestra lista de equipos conocidos o de confianza. Luego de esto, dicha confirmación ya no es requerida.

  2. El directorio de inicio usualmente se encuentra bajo la ruta /home/.

  3. A veces puede aparecer precedido del caracter ”#”, este se utiliza para comentar líneas en los archivos de configuración, por lo cual será también necesario eliminarlo.


Acerca del autor

Hugo Gilmar Erazo Full Stack Web Developer

Soy un desarrollador web con más de 10 años de experiencia. Me considero fanático de GNU/Linux, lo cual me ha permitido complementar mis conocimientos en el desarrollo web con la administración de servidores.

Aunque manejo todo lo relacionado al Front-End, me inclino más por el desarrollo Back-End. También desarrollo aplicaciones móviles híbridas. Me gusta lo que hago.

Compartir este artículo
Articulos relacionados