Manual de uso y disfrute de ssh y scp

Jueves 5 de febrero de 2004.

  1. Sobre este documento
  2. Fundamento - Qué es una shell segura
  3. Como utilizar ssh
    • Windows
    • MacOS
    • GNU/Linux o UNIX
  4. Transferencia segura de ficheros
    • SSH y FTP
    • scp
    • adjuntos al correo electrónico
  5. SSH y correo electrónico
  6. Autentificación por llave pública
  7. Más información

 I.- Sobre este documento

(C) 1999, 2000 Quique & sindominio.net

Este documento puede ser reproducido, distribuido y modificado bajo las condiciones de la licencia Open Content.

Mi agradecimiento a Burn! y TAO, que recogieron y organizaron buena parte de la información aquí presentada, y escribieron documentos sobre sobre SSH que me animaron a escribir éste.

 II.- Fundamento

A la hora de entrar en una shell (un sistema unix) la gente suele usar un cliente telnet. Una de las razones por las que la gente usa estos clientes en vez de otro método de conexión es que suelen venir junto con el sistema operativo.

Desgraciadamente, por este método tradicional, tanto el login como la password (así como el resto de la sesión) se transmiten en texto claro a través de nuestra red local o incluso a través de routers y nodos ajenos al nuestro. Esto quiere decir que cualquiera que tenga activado un sniffer puede capturar nuestras sesiones con el potencial peligro que ello conlleva.

Muchos servidores deshabilitan el puerto telnet, porque debido a la falta de encriptación es la manera más insegura de conectarse. Suponemos que no querrás que otras personas puedan leer tu correo, modificar tu página web o incluso causar graves daños a tu servidor.

En este documento vamos a explicar la manera de evitar que alguien pueda espiar nuestras claves y sesiones, y para ello estudiaremos una herramienta muy potente, fácil de instalar y muy cómoda para el/la usuari@, que no va a notar la diferencia entre el uso de ésta y la utilización de una sesión rlogin/telnet convencional. Además, usar una conexión de shell segura es más elegante ;-)

 III.- ¿Cómo se utiliza la shell segura?

ssh/sshd actúan basándose en la arquitectura cliente/servidor, como es habitual en las aplicaciones de red, y en especial dentro de Internet. En este caso concreto, sshd se ejecuta en el servidor en un puerto (por defecto en el 22) a la espera de que alguien utilizando un cliente ssh se conecte para ofrecerle una sesión segura encriptándola de extremo a extremo.

Todo es como en una sesión telnet tradicional, pero con la particularidad de que todas las comunicaciones serán encriptadas. El manejo de cualquier programa cliente de SSH es muy sencillo.

Básicamente tendrás que introducir el servidor al que te quieres conectar (por ejemplo fanelli.sindominio.net) y que algoritmo de encriptación quieres usar (por ejemplo 3DES).

La primera vez que te conectes a un servidor el programa te preguntará si aceptas la clave pública del servidor sólo para esta vez o si la quieres guardar. Si estás usando tu propio ordenador guárdarla, si estás usando el de otra persona puede ser preferible aceptarla sólo esta vez, para que no se quede por ahí estorbando en su máquina.

Probablemente no dispongas de un programa cliente de SSH, pero te lo puedes bajar de Internet. Aquí te presentamos algunos, pero todavía hay más clientes, puedes encontrar un listado completo en el SSH FAQ.

Windows

Mac OS

GNU/Linux & Unix:

Multiplataforma

Aparte de los clientes citados anteriormente hay otros que, por estar escritos en Java, son multiplataforma. Por ejemplo MindTerm, que es libre, publicado bajo la GPL.

Manejo

Una vez instalada en tu máquina una de estas versiones, para entrar desde tu cuenta unix local a la remota, usa el siguiente comando:

ssh -l nombre-de-usuario fanelli.sindominio.net

(delante de tu nombre de usuario no hay un uno, sino una ele minúscula, que quiere decir "entrar como").

Nota importante: la conexión debe ser segura a lo largo de todo el recorrido desde Sindominio hasta tu ordenador. No te conectes de manera insegura a un servidor y desde allí a fanelli, porque tu contraseña viajará en claro entre tu ordenador y la máquina intermedia, siendo vulnerable a posibles sniffers en ese camino.

 IV.- Transferencia segura de ficheros

Lo más sencillo es disponer de 2 cuentas:

Si vas a usar la misma cuenta para todo, presta mucha atención. La contraseña para leer el correo y conectarse al servidor ftp es la misma que para la shell, por lo que todas las conexiones deberán ser seguras.

Hay tres maneras de transferir ficheros de forma segura a (o desde) tu cuenta en sindominio: scp, conexión ssh redireccionada a una conexión ftp, y envío de ficheros adjuntos por correo electrónico.

scp

scp (Secure Copy Program, Programa de Copia Segura) forma parte de la instalación de ssh en sistemas UN*X. Si estás usando la versión UN*X de ssh (o un port de esta versión a otro sistema operativo) en tu máquina, puedes usar scp directamente.

El autor de Putty ha creado también pscp, un programa de scp para Windows. Nifty Telnettambién proporciona esta función.

Si vas a usar scp desde una cuenta unix remota, recuerda que tienes que conectarte a este servidor intermedio usando ssh. Si no lo hicieras, tu contraseña viajaría sin encriptar a lo largo de una conexión insegura, y podría ser descubierta por un sniffer que estuviera funcionando en la máquina insegura o en cualquier otro punto en el camino.

Conexión SSH redireccionada a una conexión FTP

Sólo los programas clientes de FTP que tienen la capacidad de realizar transferencias "en modo pasivo" (passive mode, también llamado PASV) funcionarán con un port forwarding de SSH. No todos los programas de FTP tienen esta facultad. Algunos que sí la tienen son Fetch para MacOS (shareware) y WS_FTP LE (gratuito para uso no comercial), AceFTP y CuteFTP (shareware) para Windows.

Aquí tenéis las instrucciones para configurar WS_FTP LE y AceFTP.

Ni Putty ni Nifty Telnet SSH ofrecen en estos momentos la posibidad de redireccionar para FTP una conexión SSH, pero TTSSH sí la tiene. También tenéis aquí las instrucciones para hacerlo con F-Secure SSH.

L@s usuari@s de Linux pueden probar con sftp. Si prefieres los clientes gráficos, las últimas versiones de gftp también ofrecen la posibilidad de meter las conexiones ftp en un túnel ssh.

Envío de ficheros adjuntos

Por último puedes subir o bajar ficheros de tu cuenta en sindominio como ficheros anexos MIME (attachments) a un correo electrónico. Recuerda que al usar un programa cliente de correo pop en tu ordenador para bajarte el correo desde el servidor de sindominio, debes usar la capacidad de redireccionamiento de conexión de ssh, ya que un login POP normal envía las contraseñas a través de la red sin encriptar.

 V.- SSH y correo electrónico

Bueno, hasta ahora todo ha sido bastante sencillo. Este capítulo tiene un poco más de truco, pero si prestas atención y lo sigues paso a paso, debería funcionar.

La contraseña para leer el correo es la misma que para entrar en la shell. Si usas un cliente de correo como Eudora, Messenger, etc para bajarte el correo a tu ordenador, tienes que configurarlo para que la transmisión de los datos sea segura.

De todas formas, lo más sencillo es tener 2 cuentas: una para leer el correo y colocar las páginas web, y otra exclusivamente para conectarse a la shell via ssh. Otra posibilidad es conectarse a la shell y leer allí el correo usando mutt u otro programa.

Hay dos pasos para establecer una conexión de correo POP via SSH a Sindominio:

  1. Configurar el cliente SSH para redirigir la conexión POP desde Sindominio.
  2. Configurar el cliente de correo POP para usar la conexión redirigida.

L@s usuari@s de GNU/Linux encontrarán información detallada en el Secure POP via SSH mini-HOWTO (sólo en inglés por el momento).

  1. Configuración del cliente ssh:

    En algunos programs de ssh (en el momento de escribir esto ni Putty ni Nifty Telnet ofrecen esta capacidad) hay una pantalla de configuración para redirigir la conexión. Para POP, los numeros de puerto local y remoto deben estar en 110. El servidor de destino debe ponerse como 127.0.0.1 y sólo deben permitirse conexiones locales. Para el correo saliente, también tienes que configurar una conexión SMTP redirigida. Se hace exactamente igual que para la conexión POP, excepto que el puerto es el 25 en vez del 110. Acuérdate de guardar la configuración.

  2. Configuración del cliente de correo:

    Pon como servidor POP 127.0.0.1. Si tu nombre de usuario fuese bakunin, configurarías tu cuenta POP como bakunin@127.0.0.1, y si vas a redirigir también la conexión SMTP, el servidor para correo saliente debe ser también 127.0.0.1. Como dirección de retorno deberás poner bakunin@sindominio.net.

Uso de la conexión redirigida: Tu cliente de correo debería comportarse igual que siempre, excepto que antes de usarlo deberás haberte conectado a tu cuenta en Sindominio con el cliente de ssh.

 VI.- Autentficación por clave pública

Hay un metodo para no tener que introducir la clave cada vez que te conectas: las claves públicas. Para usarlas, tenemos que generar un par de claves en nuestro ordenador Esto lo haremos mediante el comando:

koke@tuxland: $ ssh-keygen -t rsa

Éste nos preguntara donde guardar las claves y aceptaremos la ruta por defecto (normalmente /.ssh/id_rsa). A continuació nos pedirá una contraseña que nos pedira cuando vayamos a conectar. Si no queremos tener que introducir ninguna contraseña al conectarnos aceptaremos sin más pulsando Intro

Ahora es el momento de copiar la llave pública al servidor remoto, lo cual haremos con scp u otro metodo de los descritos anteriormente. Con SCP sería así:

koke@tuxland: $ scp /.ssh/id_rsa.pub koke@sindominio.net: /.ssh/authorized_keys2

Y ya está! ;P A partir de ahora podremos conectar sin necesidad de contraseña

Nota: Esta sección se detalla para su uso con OpenSSH, para otros clientes consultar la documentación

 VII.- Más información

RedIRIS tiene una página con más información> en castellano.

SSH es desarrollado por SSH Communications Security Ltd>, donde encontrarás las especificaciones del protocolo (en perfecto inglés, claro).

Y también hay un SSH FAQ.

Por último, hay que señalar que además de en OpenSSH y LSH, se está trabajando en otro protocolo libre que sustituya a SSH y no use algoritmos patentados: Mirrordir.