Cómo Instalar y configurar servidores SSH en Ubuntu




SSH (acrónimo del inglés Secure SHell, cuya traducción sería intérprete de comandos seguro) es un protocolo de comunicación para controlar un ordenador en remoto a través de una CLI (Command Line Interface -Interfaz de Línea de Comandos- también llamada: "shell"). Sirve para conectarnos con un ordenador ante el cual no estamos físicamente, bien porque está en una sala de servidores refrigerada, bien porque no tiene teclado ni pantalla, por ejemplo los que están apilados en un rack (un armario donde se guardan ordenadores como los servidores web, de correo electrónico, firewalls, etc...).
Es parecido a Telnet, con la gran diferencia de que en el caso de ssh, la información viaja codificada con lo cual es muchísimo más segura, en el caso de conectarnos a un ordenador que esté en nuestra LAN no es tan importante, pero si nos conectamos a través de Internet es fundamental, casi diría que imprescindible, usar un protocolo seguro como SSH.
Otro de los usos que se le pueden dar y que trataré los próximos post, es el copiado de archivos mediante este protocolo y otros programas como scp, incluso existen algunos paquetes que nos permiten montar una unidad de modo similar a las carpetas compartidas de windows o NFS en un equipo.
El cliente ya viene instalado por defecto, de modo que para instalar el servidor de SSH en nuestro sistema lo único que necesitas es instalar el paquete openssh-server.
apt-get install openssh-server


Los archivos de configuración del servidor ssh son:

/etc/ssh/ssh_config: Archivo de configuración del cliente ssh

/etc/ssh/sshd_config: Archivo de configuración del servidor ssh




Restringir el acceso SSH

Para evitar que todos los usarios de la máquina estén accesibles por SSH tendremos que editar como root el fichero /etc/ssh/sshd_conf, y añadir la línea AllowUsers y a continuación los usuarios que deseamos que se puedan conectar remotamente via SSH:

$ sudo gedit /etc/ssh/sshd_config

Y añadimos la línea:

AllowUsers usuario1 usuario2 usuario3

También podemos restringir el acceso dependiendo de la ip de los equipos que intenten acceder a nuestro servidor. Para ello tendremos que editar los ficheros /etc/hosts.allow y /etc/hosts.deny.
En /etc/hosts.deny añadimos la siguiente línea:
#denegamos el acceso a todos los equipos que no demos de alta en hosts.allow
sshd: ALL

en /etc/hosts.allow ponemos, por ejemplo:

#permitir el acceso a la red 192.168.1.0/24 y al equipo 10.10.1.1
sshd: 192.168.1.0/24 10.10.1.1


Para que los cambios surtan efectos habrá que reiniciar el servidor:


$ sudo /etc/init.d/ssh restart


* Restarting OpenBSD Secure Shell server..

Arranque y parada manual del servidor ssh
El servidor ssh, al igual que todos los servicios en Debian, dispone de un script de arranque y parada en la carpeta /etc/init.d.
// Iniciar o Reiniciar el servidor ssh

root@cnice-desktop:# /etc/init.d/ssh restart
// Parar el servidor ssh
root@cnice-desktop:# /etc/init.d/ssh stop

Arranque automático del servidor ssh al iniciar el sistema.

# update-rc.d ssh defaults
Si queréis montar alguna de las particiones de este servidor en un equipo cliente empleando el servidor ssh recién montado, consultad este enlace.
Para probar que realmente funciona, lo único que tenemos que hacer es teclear en el equipo en el que hemos instalado el servidor:

ssh nombre_de_usuario@localhost

Conexión al servidor mediante ssh

Para conectar desde un PC cliente al servidor mediante ssh, debemos ejecutar el comando ssh seguido del nombre ó dirección IP del servidor. La conexión se realizará con el mismo nombre de usuario que estemos utilizando en el PC cliente. Ejemplo, supongamos que jessica, desde el PC llamado aula5pc3, quiere conectarse al servidor cuya IP es 192.168.1.239:
// Conexión por ssh

jessica@aula5pc3:~$ ssh 192.168.1.239 The authenticity of host '192.168.1.239 (192.168.1.239)' can't be established. RSA key fingerprint is 51:70:3f:9c:ac:49:52:74:88:f5:45:a6:ae:f0:9c:8a. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.239' (RSA) to the list of known hosts. Password: // Introducir contraseña de jessica jessica@cnice-desktop:~$ // Ya estámos en el servidor
La primera vez que se conecte alguien desde dicho PC cliente, se instalará el certificado de autentificación del servidor, lo cual es normal si se trata de la primera vez. A la pregunta 'Are you sure you want to continue connecting (yes/no)?' debemos responder 'yes' ya que de lo contrario la comunicación se cortará. Si ya nos hemos conectado anteriormente otras veces y vuelve a realizar ésta pregunta, significa que alguien se está haciendo pasar por el servidor (nuestro servidor ha sido hackeado) o que se ha reconfigurado el servidor (cambio de nombre, IP, etc...)
Si deseamos conectarnos al servidor utilizando un nombre de usuario diferente, debemos incluir el nombre de usuario antes del nombre o IP del servidor y separado por una arroba '@'. Ejemplo, supongamos que jessica, desde el PC llamado aula5pc3, quiere conectarse como miguel al servidor cuya IP es 192.168.1.239:
// Conexión por ssh como otro usuario

jessica@cliente:~$ ssh miguel@192.168.1.239 Password: // Introducir contraseña de miguel en el servidor miguel@servidor:~$ // Ya estámos en el servidor como miguel
Desde PCs con Windows es posible conectarse por ssh a servidores Linux mediante el programa Putty. Se trata de un cliente ssh para Windows que permite acceder en modo texto al sistema Linux desde sistemas Windows.

Servicios adicionales

El paquete ssh no solamente nos proporciona conexión remota sino que proporciona otros servicios como:

Ejecución remota de aplicaciones gráficas

Mediante ssh existe la posibilidad de ejecutar aplicaciones gráficas en el servidor y manejarlas y visualizarlas en el cliente. El servidor ssh deberá tener activada la redirección del protocolo X, es decir, deberá tener el siguiente parámetro en el archivo de configuración /etc/ssh/ssh_config:
// Habilitar la redirección X en /etc/ssh/sshd_config

X11Forwarding yes
Ejemplo: supongamos que en nuestro terminal tenemos Damn Small Linux (que no dispone del gimp) y deseamos conectarnos a otro PC que sí que tiene instalado el editor gráfico gimp, los pasos que haremos serán:
// Ejecutar aplicaciones gráficas

jessica@cliente:~$ ssh -X cnice@192.168.1.239 // -X para redirigir Xwindows. cnice@cnice-desktop:~$ gimp // Ejecutamos el gimp
El resultado será que desde nuestro Linux sin gimp estamos manejando el gimp que se está ejecutando en el PC remoto

Desde PCs con Windows es posible conectarse por ssh a servidores Linux de forma gráfica mediante Cygwin. Se trata de un conjunto de programas libres que simulan un 'Unix para Windows' con servidor gráfico X y cliente ssh para Windows entre otras cosas, que permite acceder en modo gráfico al sistema Linux desde sistemas Windows. Otros servidores X gratuitos para Windows son Xming y Mocha.

Servidor de ftp seguro

El paquete ssh también incorpora un servidor ftp seguro y un cliente ftp seguro. Para activar el servidor ftp seguro tan solo hay que tener arrancado el servidor ssh.
El cliente ftp seguro es el comando sftp que funciona igual que el comando ftp. También podemos utilizarlo desde un navegador como Konqueror escribiendo sftp://nombre-del-usuario@nombre-del-servidor por ejemplo en la url: sftp://miguel@www.ieslapaloma.com



Copia remota de archivos

También se dispone de el comando scp que permite copiar archivos desde y hacia el servidor remoto desde el cliente. Ejemplo, si deseamos copiar el archivo /etc/hosts del servidor cuya IP es 192.168.1.239 e identificándonos como jessica en la carpeta actual de nuestro PC, ejecutaremos el siguiente comando:
// Copiar un archivo del servidor a nuestro PC

root@cliente:~# scp jessica@192.168.1.239:/etc/hosts . Password: // Introducimos la contraseña de jessica en el servidor hosts 100% 443 0.4KB/s 00:00 // Archivo copiado root@cliente:~#
// Copiar un archivo de nuestro PC al servidor

// La carpeta de destino debe existir en el servidor

root@cliente:~# scp miarchivo.txt jessica@192.168.1.239:/home/jessica/pruebas/ Password: // Introducimos la contraseña de jessica en el servidor miarchivo.txt 100% 443 1.6KB/s 00:00 // Archivo copiado root@cliente:~#
// Copiar una carpeta y subcarpetas de nuestro PC al servidor

root@cliente:~# scp -r /datos/*.* jessica@192.168.1.239:/pruebas/datos/ Password: // Introducimos la contraseña de jessica en el servidor datos/*.* 100% 443 50.6KB/s 00:03 // Archivos copiados root@cliente:~#
Desde PCs con Windows es posible utilizar el programa WinSCP que permite copiar archivos desde y hacia el servidor. Se trata de un cliente que utiliza el protocolo ssh para acceder al sistema de archivos del servidor Linux desde sistemas Windows.

Identificación por certificado

Para evitar tener que introducir continuamente la contraseña cuando deseamos conectar con un servidor remoto por ssh, existe la posibilidad de autentificarse por certificado, para ello debemos:
  1. Crear un certificado de usuario en el PC cliente
  2. Copiar el certificado en el PC servidor
Para que el servidor ssh acepte la autentificación por medio de certificado, deberá tener activada la opción PubkeyAuthentication yes, es decir, deberá tener el siguiente parámetro en el archivo de configuración /etc/ssh/sshd_config:
// Permitir autentificación por certificado

PubkeyAuthentication yes

Crear un certificado en el PC cliente

Para crear un certificado que permita autentificar al usuario, debemos ejecutar el comando ssh-keygen. Dicho comando creará dentro de nuestra carpeta home, en una carpeta llamada '.ssh', dos archivos: uno llamado id_rsa que será la clave privada de nuestro certificado y otro llamado id_rsa.pub que será la clave pública de nuestro certificado. Éste último archivo será el que hay que copiar en el servidor remoto.
// Creación de un certificado

miguel@cliente:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/miguel/.ssh/id_rsa): // Archivo del certificado. Podemos dejar el que viene por defecto Created directory '/home/miguel/.ssh'. Enter passphrase (empty for no passphrase): // Opcional Enter same passphrase again: Your identification has been saved in /home/miguel/.ssh/id_rsa. Your public key has been saved in /home/miguel/.ssh/id_rsa.pub. The key fingerprint is: c8:a4:fe:0c:19:78:8e:7d:05:5b:13:df:37:17:e8:ea miguel@dsl.ieslapaloma.com miguel@dsl:~$

Copiar el certificado en el PC servidor

Para poder identificarse en el servidor como miguel desde el cliente, debemos copiar el archivo id_rsa.pub que hemos creado en el cliente, en la carpeta home de miguel en el servidor dentro de una carperta llamada '.ssh' en un archivo llamado authorized_keys. Para copiar dicho archivo del cliente al servidor, podemos hacerlo con scp. Supongamos que el cliente se llama 'cliente' y el servidor se llama 'servidor':


// Copia del certificado y prueba de la conexión
// Nota: el símbolo ~ en Linux es la carpeta home del usuario

miguel@cliente:~$ scp ~/.ssh/id_rsa.pub miguel@servidor:~/.ssh/authorized_keys Password: // Va a ser la última vez que introduzcamos la contraseña id_rsa.pub 100% 242 0.2KB/s 00:00 // Copiado miguel@cliente:~$ ssh miguel@servidor // Probamos la conexión miguel@servidor:~$ // Ya estamos en el servidor sin necesidad de contraseña

Fuente:
http://www.guia-ubuntu.org/index.php?title=Servidor_ssh#Instalaci.C3.B3n_del_servidor_SSH
Página del isftic

Curso Redes de Área Local. Aplicaciones y servicios en Linux. del isftic http://www.isftic.mepsyd.es/formacion/materiales/85/cd/REDES_LINUX/indice.htm

0 comentarios:

Publicar un comentario