Manual de uso y disfrute de ssh y scp

  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. Autenificació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

  • TTSSH es una extensión para TeraTerm Pro (un magnífico cliente telnet para Windows), gratuita y con una licencia open-source. No incluye scp, pero sí proporciona port-forwarding.

    Aquí tenéis las instrucciones para instalar y configurar TTSSH.

  • Putty se distribuye bajo la X/Open licence (similar a la BSD), así que es software libre: incluye el código fuente, lo puedes distribuir y modificar, y es gratuito. No proporciona port forwarding, pero sí scp.

    Tenemos una copia local, pero quizás haya ya nuevas versiones. Además hay un manual en castellano (copia local, el original se encuentra aquí).

  • SSH Windows Client también es gratuito, pero no es libre. El autor ha dejado de desarrollar este programa y lo ha retirado de sus páginas, así que hemos creado un mirror de su antigua página, que incluye copias del programa tanto para Win 3.x como para Win 95/NT.

    También hay un manual en castellano (también tenemos copia local.

  • FiSSH ha sido desarrollado en el MIT y es libre, pero no está permitida su exportación de Estados Unidos. :(

  • También hay ports a win95/NT del paquete SSH original. Funcionan exclusivamente por la línea de comandos (es decir, no son gráficos), pero soportan todas las características del cliente ssh para unix, incluyendo connection forwarding y transferencia de ficheros usando scp.

  • PenguiNet es un cliente telnet y ssh shareware.

  • F-Secure de DataFellows es comercial, aunque puedes usar una demo por 30 días. Tenemos conocimiento de que existe algún crack para este programa. RedIRIS tiene un manual de F-Secure.

  • Secure CRT, de Van Dyke Technologies, también es comercial, y no puede ser exportado fuera de Estados Unidos... en teoría. Grupos de hackers han depositado copias de scrt232 en servidores de otros países, junto con su generador de números de serie. Con una simple búsqueda en Altavista podrías encontrar alguna de ellas...

Mac OS

  • Nifty Telnet SSH es una modificación de Nifty Telnet que implementa SSH. No es libre ni incluye el código fuente, pero es el único cliente gratuito para Mac que conozco. En cualquier caso es un excelente programa, del que tenemos una copia local.

  • Parece ser que el autor de Better Telnet desarrolló una versión con SSH, pero las estúpidas leyes estadounidenses sobre exportación de criptografía fuerte impiden que lo ponga disponible en Internet.
  • F-Secure también está disponible para Mac. Cuesta dinero, pero puedes probar la demo por 30 días. Hay un manual en castellano.

GNU/Linux & Unix:

  • Puedes bajar la última versión del servidor web de SSH. Desgraciadamente la versión original de ssh no es libre, y la segunda versión tiene incluso una licencia más restrictiva que la primera.

  • Afortunadamente, OpenBSD publicó una implementación libre de SSH1, llamada OpenSSH.

    Inmediatamente se hizo un port para GNU/Linux.

  • Psst... Niels Möller lanzó una iniciativa para desarrollar LSH, una implementación libre (bajo la GNU GPL) del protocolo ssh versión 2, libre de patentes y restricciones. Puedes conseguir la última versión aquí.

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:

  • una para leer el correo y transferir ficheros (FTP). Esta cuenta tendría una shell falsa (no tendría acceso), con lo que si la contraseña cayera en manos de los malos, no sería del todo grave.
  • otra exclusivamente para conectarse a la shell vía ssh.

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.

 

1