Servidor ssh
De Guía Ubuntu
Tabla de contenidos
1 ¿Qué es SSH?
2 Conexión a un s ervidor remoto 3 Tipo de ataque man-in-the-middle
4 Evitar que nos pida el pas s word cada vez 5 Copia de s eguridad
6 SSHFS o montar directorio remoto con SSH 7 Ejecutar comandos en un hos t remoto
8 ¿Cómo enviar u obtener archivos y carpetas con s cp? 9 Cómo hacer todo es to en modo gráfico
10 Ins talación del s ervidor SSH 11 Res tringir el acces o SSH
¿Qué es SSH?
SSH (s ecure s hell -intérprete de comandos s eguro-) 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 - tb llamada: "s hell"). Sirve para conectarnos con un ordenador ante el cual no es tamos fís icamente, bien porque es tá en una s ala de s ervidores refrigerada, bien porque no tiene teclado ni pantalla, por ejemplo los que es tán apilados en un rack (un armario donde s e guardan ordenadores como los s ervidores web, de correo electrónico, firewalls , etc...).
Es parecido a Telnet, con la gran diferencia de que en el cas o de s s h, la información viaja codificada con lo cual es muchís imo más s egura, en el cas o de conectarnos a un
ordenador que es té en nues tra LAN no es tan importante, pero s i nos conectamos a
través de Internet es fundamental, cas i diría que impres cindible, us ar un protocolo s eguro como SSH.
Conexión a un servidor remoto
Para conectarnos con un s ervidor SSH remoto des de Ubuntu tenemos un cliente por defecto. En Windows no, hay que des cargar un cliente (por ejemplo, el programa Putty (http://www.chiark.greenend.org.uk/%7Es gtatham/putty/download.html) ). Us ar el cliente es muy s encillo: bas ta con teclear des de una cons ola o terminal lo s iguiente:
$ ssh host_remoto
Donde host_remoto es la IP del s ervidor SSH o s u nombre de és ta. Es o hará que nos conectemos con nues tro nombre de us uario. Si queremos conectar como un us uario remoto teclearemos :
$ ssh usuario_remoto@host_remoto
Luego nos pide la contras eña del us uario. La primera vez que nos conectemos a un
s ervidor tarda un poco más y nos pide confirmación tecleando "yes " con todas s us letras , las s ubs iguientes ya no. Sabemos que es tamos conectados porque el prompt cambia y aparece en lugar del nombre de nues tro hos t el nombre del hos t remoto.
Los comandos , programas y s cripts que lancemos tras conectarnos s e ejecutarán en la máquina a las que nos hayamos conectado, utilizando los recurs os del hos t remoto (CPU, memoria, dis co, etc.). Es ta arquitectura puede utilizars e, por ejemplo, para tener un s ervidor más potente y varios clientes que ejecutan aplicaciones en dicha máquina. Para ejecutar aplicaciones gráficas en la máquina a la que nos conectamos tenemos dos opciones . La primera cons is te en definir la variable $DISPLAY apuntando a la máquina des de la que nos conectamos .
$ export DISPLAY=host_local:0.0
Es te mecanis mo no s e recomienda por motivos de s eguridad (el protocolo X11 no s e encuentra cifrado) y, además , pueden encontrars e problemas porque cortafuegos intermedios bloqueen es e tráfico (puertos 600x TCP).
Una s olución mejor es utilizar un túnel SSH para encaps ular el protocolo X11, lo que trans mite la información de manera s egura y, además , no s uele dar problemas con los cortafuegos intermedios .
Para poder ejecutar aplicaciones gráficas en el hos t remoto de forma s egura,
neces itamos dos cos as . La primera, que en la configuración del s ervidor SSH del hos t remoto (/etc/s s h/s s hd_config) s e encuentre activada la s iguiente opción:
X11Forwarding yes
Para aprovechar es ta caracterís tica, hemos de conectarnos us ando el parámetro -X, lo que exportará la configuración de la variable $DISPLAY con lo que podremos ejecutar aplicaciones gráficas de forma remota:
$ ssh -X usuario_remoto@host_remoto
Ahora s i ejecutas el programa xclock verás que la ventana s ale en tu es critorio: $ xclock
Tipo de ataque man-in-the-middle
Imaginemos que la IP de nues tro s ervidor es 192.168.2.3. Nos conectamos via SSH des de otro equipo, la primera vez tarda un poco más porque tiene que es cribir en el archivo /home/[nuestro_usuario]/.ssh/known_host una entrada para es a IP.
dis tinto, por ejemplo porque el ordenador s ervidor s s h ha s ido formateado o porque s e ha apagado y s us tituido por otro al que s e le ha as ignado la mis ma IP. Es e es el error
man-in-the-middle y s ignifica: "el ordenador cuya IP es esa no es el mismo que yo conocía, puede ser que alguien se esté haciendo pasar por él" y no nos deja volvernos a conectar s alvo que borremos la entrada de es a IP en el archivo known_host. Tienes más información al res pecto en el artículo de la Wikipedia Ataque Man-in-the-middle.
Evitar que nos pida el password cada vez
Siempre que conectemos a un ordenador remoto con SSH nos va a pedir el pas s word de acces o para as egurars e de que tenemos permis os . Hay una forma de evitar que nos pida el pas s word s iempre haciendo que el ordenador remoto confíe en nos otros . Para ello hemos de generar un par de claves DSA que s e us arán en la relación de confianza:
$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/usuario/.ssh/id_dsa): Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/usuario/.ssh/id_dsa. Your public key has been saved in /home/usuario/.ssh/id_dsa.pub. The key fingerprint is:
81:a1:d3:96:fa:a2:73:4d:3a:76:c1:fd:3f:6a:6f:1e usuario@localhost
Una vez generada la copiamos al us uario del ordenador remoto con el que queremos mantener la relación de confianza us ando el comando ssh-copy-id. Es te es un ejemplo del us o con la s alida del programa:
$ ssh-copy-id [email protected]
Now try logging into the machine, with "ssh '[email protected]'", and check in: .ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
Para que funcione correctamente el comando ssh-copy-id el agente tiene que es tar activo para la s es ión. Si no lo has pues to que lo arranque al inicio como s e explica un poco más abajo, tendrás que arrancarlo des de la cons ola ejecutando
ssh-add.
Ahora s olo hay que arrancar el agente SSH para que recuerde nues tra contras eña. Nos pregunta la contras eña y ahora ya podemos acceder al ordenador remoto s in tener que es cribir el pas s word cada vez.
El agente s ólo dura mientras es té activa nues tra cons ola. O s ea que s i la cerramos y la volvemos a abrir ya no es tá activo el agente y nos volverá a pedir el pas s word cada vez. Para evitar es to lo que podemos hacer es añadir el agente a la s es ión para que s e ejecute cada vez que s e inicie GNOME. Al iniciar s aldrá un diálogo que nos preguntará por la
contras eña.
Copia de seguridad
Si vas a migrar la configuración de tu us uario a otra máquina tienes que cons ervar el directorio $HOME/.ssh. Ahí es donde s e guarda los ficheros de la clave pública y privada generadas en el punto anterior:
$ tar czf ssh.tgz $HOME/.ssh
SSHFS o montar directorio remoto con SSH
Algunas veces neces itamos trabajar durante bas tante tiempo con un s is tema remoto, copiando y editando ficheros . Exis te la pos ibilidad de us ar Nautilus que s e puede conectar remotamente al s ervidor us ando el protocolo 'sftp://, pero s uele s er lento y muchas veces es más práctico us ar la línea de comandos . La s olución s ería montar un recurs o remoto al es tilo de NFS y encima s in tener que s e root. Pues s i, s e puede :)
Fus e es un módulo del kenel que permite montar dis tintos s is temas de ficheros con un us uario normal s in privilegios . SSHFS es un programa creado por el autor de fuse que permite montar un directorio remoto us ando SSH. Accederemos localmente como s i es tuviera en nues tra propia máquina. Hay que ins talar el programa sshfs. El us uario que puede montar el s is tema de ficheros tiene que pertenecer al grupo fuse.
$ sudo usermod -G fuse -a usuario_local
Tenemos que s alir y volver a entrar en el s is tema para que s e haga efectivo el cambio de grupo. Antes de empezar a us ar fuse tienes que cargar el módulo en memoria:
$ sudo modprobe fuse
Ahora vamos a hacer una prueba: $ mkdir ~/directorio_remoto
$ sshfs usuario_remoto@servidor_remoto:/tmp ~/directorio_remoto
Es te comando monta el directorio /tmp del s ervidor remoto en el directorio local ~/directorio_remoto. Ahora podemos trabajar en el directorio montado como s i de un directorio local s e tratas e. Para des montar el directorio:
$ fusermount -u ~/directorio_remoto
Si vamos a trabajar a diario con es te directorio remoto, quizás es buena idea añadirlo al fichero /etc/fstab. De es ta forma s e montará automáticamente al iniciar nues tro ordenador
sshfs#usuario_remoto@remote_server:/tmp /home/usuario_local/directorio_remoto fuse defaults,auto 0 0 Si vamos a us ar fuse y sshfs regularmente, tendrías que editar el fichero /etc/modules y añadir el módulo fuse. De otra forma tendrás que cargar el módulo manualmente cada vez que lo quieras us ar:
sudo sh -c "echo fuse >> /etc/modules"
Ejecutar comandos en un host remoto
Ahora que ya s abemos como entrar en un ordenador remoto s in el pas s word, por qué no ejecutar comandos remotamente? Se abre un nuevo mundo de pos ibilidades muy útiles como tareas que s e pueden ejecutar de forma automática.
$ ssh usuario_remoto@host_remoto "find /tmp -name *.txt"
Es te comando bus cará los ficheros de texto del directorio temporal que hay en el ordenador remoto. Si bien es un ejemplo poc útil, en la vida de un adminis trador de s is tema hay muchos buenos ejemplos .
Y vamos a dar una nueva vuelta de ros ca: s i es tamos adminis trando s is temas Unix/Linux es muy pos ible que neces itemos ejecutar el mis mo programa en varios s ervidores a la vez. Es te s encillo s cript e s una gran ayuda en es os cas os :
#!/usr/bin/perl @hosts=(
"usuario1\@maquina1.guay.es", "usuario2\@maquina2.guay.es" );
die "Uso: runonall \'command\'\n" unless $ARGV[0]; foreach(@hosts){
print "$_ -> $ARGV[0]:\n"; print `ssh $_ $ARGV[0]`; }
¿Cómo enviar u obtener archivos y carpetas con scp?
En una cons ola o terminal tecleamos : $ scp -r usuario@maquina:/home/carpeta .
luego ponemos la pas s word del us uario y nos copiará la carpeta "/home/carpeta" remota en el directorio actual "." naturalmente s iempre que us uario tenga permis os s obre la carpeta y s u cuenta es té entre las de los que pueden hacer s s h. La opción "-r" s ignifica recurs ivo, es decir, copia la carpeta y todo s u contenido, incluidas las s ubcarpetas y el contenido de és tas . Si no lo ponemos la órden para compiar todos los archivos de una carpeta s ería:
$ scp usuario@maquina:/home/carpeta/* .
Cómo hacer todo esto en modo gráfico
Silo que que queremos es conectarnos a un ordenador por s s h en modo grafico también lo podremos hacer. Es mas s imple pero tambien tienes menos pos ibilidades , o para hacer ciertas cos as tardas mas inclus o que haciendolo por cons ola pero para las operaciones faciles como adminis trar, editar un fichero tambien es pos ible hacerlo de es ta manera.
Entraremos en Lugares > Conectarse al servidor...
Elegiremos en el combbo de arriba en lugar de FTP publico, SSH y pondremos la IP o el nombre (en cas o de anteriormente ya hallamos editado el fichero hos ts ) y as i des pues de teclear la contras eña y aceptar es taremos ya dentro del mis mo.
Instalación del servidor SSH
El cliente ya viene ins talado por defecto, de modo que para ins talar el s ervidor de SSH en nues tro s is tema lo único que neces itas es ins talar el paquete openssh-server. Puedes leer ¿Cómo ins talar aplicaciones ? s i no s abes como hacerlo.
Restringir el acceso SSH
Para evitar que todos los us arios de la máquina es tén acces ibles 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 us uarios que des eamos que s e puedan conectar remotamente via SSH: $ sudo gedit /etc/ssh/sshd_conf
Y añadimos la línea:
AllowUsers usuario1 usuario2 usuario3
Para que los cambios s urtan efectos habrá que reiniciar el s ervidor: $ sudo /etc/init.d/ssh restart
* Restarting OpenBSD Secure Shell server...
Obtenido de "http://www.guia-ubuntu.org/index.php?title=Servidor_s s h" Categoría: Adminis tración del s is tema
Esta página fue modificada por última vez el 08:34 12 mar 2007. Esta página ha sido visitada 16.320 veces.
El contenido está disponible bajo los términos de la Attribution-NonCommercial-ShareAlike 2.5
Política de protección de datos Acerca de Guía Ubuntu