Professional Documents
Culture Documents
http://www.guia-ubuntu.org/index.php?title=Servidor_ssh&printable=yes
Servidor ssh
De Gua Ubuntu
Secure SHell, cuya traduccin sera intrprete de comandos seguro) es un protocolo de comunicacin para controlar un ordenador en remoto a travs de una CLI (Command Line Interface -Interfaz de Lnea de Comandos- tambin llamada: "shell"). Sirve para conectarnos con un ordenador ante el cual no estamos fsicamente, bien porque est en una sala de servidores refrigerada, bien porque no tiene teclado ni pantalla, por ejemplo los que estn apilados en un rack (un armario donde se guardan ordenadores como los servidores web, de correo electrnico, firewalls, etc...). Es parecido a Telnet, con la gran diferencia de que en el caso de ssh, la informacin viaja codificada con lo cual es muchsimo ms segura, en el caso de conectarnos a un ordenador que est en nuestra LAN no es tan importante, pero si nos conectamos a travs de Internet es fundamental, casi dira que imprescindible, usar un protocolo seguro como SSH.
Tabla de contenidos
1 Conexin a un servidor remoto 2 Tipo de ataque man-in-the-middle 3 Evitar que nos pida el password cada vez 4 Copia de seguridad 5 SSHFS o montar directorio remoto con SSH 6 Ejecutar comandos en un host remoto 7 Enviar u obtener archivos y carpetas con scp 8 Hacer todo esto en modo grfico 9 Instalacin del servidor SSH 10 Restringir el acceso SSH 11 Enlaces externos
Donde host_remoto es la IP del servidor SSH o el nombre de este. Eso har que nos conectemos con nuestro nombre de usuario. Si queremos conectar como un usuario remoto teclearemos:
$ ssh usuario_remoto@host_remoto
Luego nos pide la contrasea del usuario. La primera vez que nos conectemos a un servidor tarda un poco ms y nos pide confirmacin tecleando "yes" con todas sus letras, las
1 de 7
http://www.guia-ubuntu.org/index.php?title=Servidor_ssh&printable=yes
subsiguientes ya no. Sabemos que estamos conectados porque el prompt cambia y aparece en lugar del nombre de nuestro host el nombre del host remoto. Los comandos, programas y scripts que lancemos tras conectarnos se ejecutarn en la mquina a las que nos hayamos conectado, utilizando los recursos del host remoto (CPU, memoria, disco, etc.). Esta arquitectura puede utilizarse, por ejemplo, para tener un servidor ms potente y varios clientes que ejecutan aplicaciones en dicha mquina. Para ejecutar aplicaciones grficas en la mquina a la que nos conectamos tenemos dos opciones. La primera consiste en definir la variable $DISPLAY apuntando a la mquina desde la que nos conectamos.
$ export DISPLAY=host_local:0.0
Este mecanismo no se recomienda por motivos de seguridad (el protocolo X11 no se encuentra cifrado) y, adems, pueden encontrarse problemas porque cortafuegos intermedios bloqueen ese trfico (puertos 600x TCP). Una solucin mejor es utilizar un tnel SSH para encapsular el protocolo X11, lo que transmite la informacin de manera segura y, adems, no suele dar problemas con los cortafuegos intermedios. Para poder ejecutar aplicaciones grficas en el host remoto de forma segura, necesitamos dos cosas. La primera, que en la configuracin del servidor SSH del host remoto (/etc/ssh /sshd_config) se encuentre activada la siguiente opcin:
X11Forwarding yes
Para aprovechar esta caracterstica, hemos de conectarnos usando el parmetro -X, lo que exportar la configuracin de la variable $DISPLAY con lo que podremos ejecutar aplicaciones grficas de forma remota:
$ ssh -X usuario_remoto@host_remoto
2 de 7
http://www.guia-ubuntu.org/index.php?title=Servidor_ssh&printable=yes
y significa: "el ordenador cuya IP es esa, no es el mismo que yo conoca. Puede ser que alguien se est haciendo pasar por l" y no nos deja volvernos a conectar salvo que borremos la entrada de esa IP en el archivo known_host. Tienes ms informacin al respecto en el artculo de la Wikipedia Ataque Man-in-the-middle.
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 usuario del ordenador remoto con el que queremos mantener la relacin de confianza usando el comando ssh-copy-id. Este es un ejemplo del uso con la salida del programa:
$ ssh-copy-id usuario_remoto@192.168.0.1 Now try logging into the machine, with "ssh 'usuario_remoto@192.168.0.1'", 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 estar activo para la sesin. Si no lo has puesto que lo arranque al inicio como se explica un poco ms abajo, tendrs que arrancarlo desde la consola ejecutando ssh-add. Ahora solo hay que arrancar el agente SSH para que recuerde nuestra contrasea. Nos pregunta la contrasea y ahora ya podemos acceder al ordenador remoto sin tener que escribir el password cada vez.
$ ssh-add
El agente slo dura mientras est activa nuestra consola. O sea que si la cerramos y la
3 de 7
http://www.guia-ubuntu.org/index.php?title=Servidor_ssh&printable=yes
volvemos a abrir ya no est activo el agente y nos volver a pedir el password cada vez. Para evitar esto lo que podemos hacer es aadir el agente a la sesin para que se ejecute cada vez que se inicie GNOME. Al iniciar saldr un dilogo que nos preguntar por la contrasea.
Copia de seguridad
Si vas a migrar la configuracin de tu usuario a otra mquina tienes que conservar el directorio $HOME/.ssh. Ah es donde se guarda los ficheros de la clave pblica y privada generadas en el punto anterior:
$ tar czf ssh.tgz $HOME/.ssh
Tenemos que salir y volver a entrar en el sistema para que se haga efectivo el cambio de grupo. Antes de empezar a usar fuse tienes que cargar el mdulo en memoria:
$ sudo modprobe fuse
Este comando monta el directorio /tmp del servidor remoto en el directorio local ~/directorio_remoto. Ahora podemos trabajar en el directorio montado como si de un directorio local se tratase. Para desmontar el directorio:
$ fusermount -u ~/directorio_remoto
Si vamos a trabajar a diario con este directorio remoto, quizs es buena idea aadirlo al fichero /etc/fstab. De esta forma se montar automticamente al iniciar nuestro ordenador o manualmente (si elegimos la opcin noauto) sin necesidad de especificar la localizacin
4 de 7
http://www.guia-ubuntu.org/index.php?title=Servidor_ssh&printable=yes
Si vamos a usar fuse y sshfs regularmente, tendras que editar el fichero /etc/modules y aadir el mdulo fuse. De otra forma tendrs que cargar el mdulo manualmente cada vez que lo quieras usar:
$ sudo sh -c "echo fuse >> /etc/modules"
Este comando buscar 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 administrador de sistema hay muchos buenos ejemplos. Y vamos a dar una nueva vuelta de rosca: si estamos administrando sistemas Unix/Linux es muy posible que necesitemos ejecutar el mismo programa en varios servidores a la vez. Este sencillo script e suna gran ayuda en esos casos:
#!/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]`; }
luego ponemos la password del usuario y nos copiar la carpeta "/home/carpeta" remota en el directorio actual "." naturalmente siempre que usuario tenga permisos sobre la carpeta y su cuenta est entre las de los que pueden hacer ssh. La opcin "-r" significa recursivo, es decir, copia la carpeta y todo su contenido, incluidas las subcarpetas y el contenido de stas. Si no lo ponemos la orden para copiar todos los archivos de una carpeta sera:
5 de 7
http://www.guia-ubuntu.org/index.php?title=Servidor_ssh&printable=yes
$ scp usuario@maquina:/home/carpeta/* .
Elegiremos en el combo de arriba en lugar de FTP pblico, SSH y pondremos la IP o el nombre (en caso de anteriormente ya hayamos editado el fichero hosts) y as despues de teclear la contrasea y aceptar estaremos ya dentro del mismo.
o
$ sudo gedit /etc/ssh/sshd_config
Y aadimos la lnea:
AllowUsers usuario1 usuario2 usuario3
Para que los cambios surtan efectos habr que reiniciar el servidor:
$ sudo /etc/init.d/ssh restart
6 de 7
http://www.guia-ubuntu.org/index.php?title=Servidor_ssh&printable=yes
Enlaces externos
Guia de configuracin de cliente y servidor (http://wiki.lapipaplena.org/index.php /Como_montar_accesos_SFTP) Artculo de SSH en la Wikipedia (en espaol) How-To: Import/Export GPG key pair (http://www.debuntu.org/how-to-import-exportgpg-key-pair) (en ingls) Obtenido de "http://www.guia-ubuntu.org/index.php?title=Servidor_ssh"
7 de 7