Como mencionamos en las lecciones anteriores, OpenSSH es una implementación gratuita de los protocolos SSH-1 y SSH-2, disponibles desde el sitio web oficial de OpenSSH.
OpenSSH fue escrito por desarrolladores del proyecto OpenBSD y puesto a disposición bajo una licencia de tipo BSD y aunque fue diseñado para los sistemas operativos tipo Unix, pronto paso a ser utilizable también por Windows.
En la mayoría de los casos, OpenSSH funciona igual en Windows y Unix, aunque todavía hay existen pequeñas diferencias.
A continuación, vamos a ver al detalle como instalar OpenSSH, las características de OpenSSH y su uso.
Características de OpenSSH
OpenSSH es una implementación SSH muy completa e incluye varias características que te enumero a continuación:
- Aplicaciones de clientes para acceso remoto y ejecución de comandos remotos
- Copia segura de archivos a través de la red
- Servidor SSH altamente configurable
- Interfaces de línea de comandos, para todos los programas, que facilitan la ejecución de scripts con herramientas estándar de Unix
- Instrumentos estándar Unix (shell, Perl, etc.)
- Numerosos algoritmos de cifrado y mecanismos de autenticación seleccionables
- Agente de SSH capaz de almacenar las claves para facilitar su uso
- Soporte para proxies SOCKS
- Soporte para reenviar puertos TCP y X11
- Funciones de historial y grabación para facilitar la depuración
Instalación de OpenSSH en Windows
Si estas utilizando un operativo basado en Unix/Linux, como Ubuntu o macOS es muy probable que ya tengas instalado el SSH. Si quieres verificar, puedes hacerlo desde la Terminal y comprobar la versión de SSH instalada, utilizando el comando ssh -V.
En Windows, sin embargo, debes instalar OpenSSH si quieres utilizarlo, para ello la instalación de OpenSSH puede realizarse de dos maneras diferentes.
La primera, mediante el uso de Cygwin mientras que la segunda y menos engorroso (solamente para las versiones de Windows Server 2022, Windows Server 2019, Windows 10) a través de “Configuración -> Aplicaciones y características -> Características opcionales”.
Luego debes buscar la opción de “Cliente OpenSSH” ( y “OpenSSH Server” ) en la barra de búsqueda de “Características opcionales” para instalar OpenSSH, como ya se detalla en el segundo artículo de la guía SSH.
Para instalar OpenSSH a través de Cygwin es necesario, instalar la biblioteca de Cygwin. Cygwin se usa porque ofrece una fórmula sencilla de instalar una amplia colección de software de código abierto en Windows.
Cygwin es, una colección de herramientas que permiten compilar y ejecutar aplicaciones Unix o Linux en un sistema operativo Windows, utilizando una interfaz de texto similar a la de Linux.
Este conjunto permite a los desarrolladores migrar fácilmente aplicaciones de Unix o Linux a sistemas basados en Windows.
Después de descargar el ejecutable e instalarlo, asegúrate de que:
- se incluya
C:\cygwin\bin
en la RUTA de las variables del sistema - se cree una variable de entorno llamada
CYGWIN
y asignarle el valorntsec tty
Una vez revisado esto, al abrir Cygwin debes asegurarte de instalar los siguientes paquetes:
openssh
– la suite completa que incluye archivos de soportecygrunsrv
– necesario para ejecutar ssh como servicio de Windows
En detalle, en la barra de búsqueda en Cygwin escribe primero openssh
y completa su instalación, luego haz lo mismo con cygrunsrv
.
Una vez hecho esto, deberías tener instaladas las herramientas necesarias para continuar con la instalación de OpenSSH.
¿Cómo usar un cliente SSH en Windows?
Una vez que OpenSSH esté instalado en Windows, vas a poder usar la aplicación como cliente ssh
, scp
o sftp
. Por ejemplo, una conexión SSH normal puede tener lugar de la siguiente manera:
# log-in al server.text.com como usuario ciberninjas
ssh -l ciberninjas server.text.com
# copiar un fichero prueba.txt del servidor a la máquina local
scp prueba.txt server.text.it
La única dificultad que puedes encontrar en Windows es encontrar el directorio de ~/.ssh
que es la ruta en la que se guardará el archivo.
En Unix, el directorio home
generalmente se encuentra en /home/NombreUsuario
.
Si estás utilizando un shell de comando estándar de Windows (por ejemplo cmd) o si quieres acceder desde el Explorador de Windows, directorio ~/.ssh
. Es muy posible que quieras encontrar la ruta adecuada.
Para ello, escribe este comando desde un shell de comandos de Windows (CMD) para encontrar el directorio:
C:\>cygpath -w ~
# Verás una ruta similar a este:
C:\cygwin\home\ciberninjas
El comando cygpath
convierte las rutas de Cygwin en rutas de Windows y con este comando se muestra la ruta principal del directorio de Cygwin. Por lo tanto, los archivos del cliente SSH se almacenarán dentro del directorio: **C:\cygwin\home\ciberninjas.ssh**.
¿Cómo configurar un servidor SSH en Windows?
El servidor SSH (sshd) comienza en Cygwin como un servicio estándar de Windows, llamado Cygwin SSH Service
. Cygwin proporciona un script llamado ssh-host-config
para configurar este servicio.
Una vez, asegurado de haber configurado correctamente las variables de ruta y el entorno de OpenSSH y Cygwin, podemos dirigirnos al CMD de Windows:
C:\> ssh-host-config
Deberás responder a todas las preguntas de manera positiva y al final, el servicio del servidor SSH debería estar listo para poder comenzar a trabajar con él.
Si abres el panel de control de los Servicios de Windows (escribiendo en la barra de búsqueda de Windows “Servicios” para encontrarlo) y buscas el servicio Cygwin SSHD Service. Este debería de aparecer allí.
También, deberías de poder iniciarlo o apagarlo desde una terminal, lanzando los comandos:
C:\> net start sshd
ó
C:\> net stop sshd
Llegados aquí. La configuración del archivo ssh-host-config es mucho más complejo y se pueden gestionar numerosas características del protocolo SSH: Como la política criptográfica, el reenvío de puertos, el registro de verbosis, etc.
Diferentes archivos de configuración
Hasta aquí, hemos podido ver cómo instalar un cliente y servidor OpenSSH, tanto para el Cliente como para el Servidor OpenSSH es posible crear archivos de configuración que te permitan agregar o modificar funciones específicas.
Un ejemplo clásico de la configuración de los archivos del lado del cliente es la necesidad de almacenar todas las direcciones IP remotas, diferentes nombres de usuario, puertos y las opciones de conexión.
En este sentido, OpenSSH nos ayuda a establecer las opciones SSH necesarias para la conexión remota en un archivo de configuración específico. Por lo tanto, crear un archivo de configuración particular permite no solo ahorrar tiempo, sino que también evitar almacenar múltiples datos de conexión.
A cambio, incluso en el lado del servidor, se pueden configurar diferentes configuraciones de conexión. Por ejemplo, una configuración común para un servidor SSH dedicado a la autentificación a través del sistema de claves públicas y privadas.
Conclusiones finales
En esta lección vimos cómo iniciar un servicio de servidor SSH y cómo usar un cliente SSH.
Aprendimos que tanto el Cliente como el Servidor OpenSSH tienen archivos de configuración que puedes modificar para administrar o agregar configuraciones de conexión concretas.
En los próximos artículos de esta guía veremos, a través de casos de uso, algunas de estas configuraciones.