Instalación del servidor SFTP (SSH FTP) en Windows con OpenSSH

Puede utilizar el paquete oficial de OpenSSH para Windows para organizar fácilmente una transferencia segura de archivos entre el cliente y el servidor de Windows utilizando el SFTP (FTP seguro) protocolo. En este artículo, mostraremos cómo usar Win32-OpenSSH para ejecutar un servidor SFTP en Windows 10 o Windows Server 2016/2012 R2.

¿Qué es SFTP?

SFTP (Seguro Protocolo de transferencia de archivos, FTP seguro o SSH FTP) es la extensión del protocolo SSH, siendo un estándar en el mundo de los sistemas UNIX / Linux. Desde el punto de vista del usuario, es similar a FTP, pero de hecho, es un protocolo completamente diferente, que no tiene nada en común con FTP. Los datos se transfieren entre un cliente y un servidor a través del túnel SSH (puerto TCP 22).

Las principales ventajas de SFTP:

  1. Los archivos y comandos se transfieren dentro de una sesión SSH segura;
  2. Se usa una conexión para enviar archivos y comandos;
  3. Se admiten enlaces simbólicos, interrupción / reanudación de la transferencia, funciones de eliminación de archivos, etc.
  4. Como regla general, en canales donde FTP es lento o falla, la conexión SFTP es más rápida y confiable;
  5. Posibilidad de autenticarse mediante claves SSH.
No confunda los protocolos SFTP y FTPS. FTPS es esencialmente un simple FTP con un certificado SSL, y SFTP es el protocolo para enviar los datos y comandos FTP dentro de la sesión SSH.

Implementación de SFTP en Windows

Históricamente, los sistemas operativos de Windows no proporcionan herramientas integradas para ejecutar un servidor SFTP seguro. Para estos fines, se han utilizado soluciones de código abierto o propietarias, como Core FTP, FileZilla, CYGWIN, OpenSSH, FTP Shell, IPSwitch, etc. Sin embargo, hace varios años Microsoft lanzó su versión del puerto OpenSSH para Win32. Este proyecto se llama Win32-OpenSSH.

Consideremos la configuración del servidor SFTP que ejecuta Windows 10 o Windows Server 2019/2016/2012 R2 usando el Win32 OpenSSH paquete.

Instalación de Win32 OpenSSH en Windows 10 1803 + / Windows Server 2019

En Windows 10 build 1803 y posteriores y en Windows Server 2019, el paquete OpenSSH ya está incluido en el sistema operativo en forma de Feature on Demand (FoD) como RSAT.

Puede instalar el servidor OpenSSH en Windows 10 y Windows Server 2019 con el siguiente cmdlet de PowerShell:

Add-WindowsCapability -Online -Name OpenSSH.Server*

O usando DISM:
dism /Online /Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0

También puede agregar el servidor OpenSSH desde la GUI de Windows 10 (Ajustes -> Aplicaciones -> Características opcionales -> Agregar una característica -> Abrir servidor SSH -> Instalar en pc).

instalar la función del servidor openssh en Windows 10 1903

  • Los ejecutables de OpenSSH se encuentran en el directorio: c:windowssystem32OpenSSH;
  • los sshd_config El archivo de configuración se encuentra en el directorio: C:ProgramDatassh (este directorio se crea después del primer inicio del servicio sshd);
  • Archivo de registro: c:windowssystem32OpenSSHlogssshd.log;
  • El archivo y las claves autorizados_keys se almacenan en un directorio: %USERPROFILE%.ssh.

Ahora puede conectarse a Windows 10 a través de SSH como en Linux.

Instale Win32 OpenSSH en Windows Server 2016/2012 R2

En las versiones anteriores de Windows 10 y en Windows Server 2016/2012 R2, debe descargar e instalar OpenSSH desde GitHub (https://github.com/PowerShell/Win32-OpenSSH/releases). Necesita descargar una versión del paquete para Windows x64: OpenSSH-Win64.zip (3,5 MB).

  1. Extraiga el archivo en el directorio de destino: C: OpenSSH-Win;
  2. Inicie la cli de PowerShell elevada y cambie a la carpeta OpenSSH: Cd C:OpenSSH-Win
  3. Agregue la ruta al directorio OpenSSH a la variable de entorno Path (Propiedades del sistema -> pestaña Avanzado -> Variables de entorno -> Seleccione y edite el Sendero variable de sistema -> Agregar la ruta a la carpeta OpenSSH); agregue la carpeta openssh a la ruta de la variable del sistema
  4. Instale el servidor OpenSSH: .install-sshd.ps1 (debería aparecer un mensaje verde «Los servicios sshd y ssh-agent se instalaron correctamente”);instalar openssh (servicio sshd) con el script de powershell
  5. Genere claves SSH para el servidor (necesarias para iniciar el servicio sshd):
    ssh-keygen.exe –Assh-keygen: generating new host keys: RSA DSA ECDSA ED25519generar clave ssh con ssh-keygen.exe
  6. Habilite el inicio automático para el servicio SSHD e inícielo con los siguientes comandos de administración del servicio de PowerShell:
    Set-Service -Name sshd -StartupType ‘Automatic’
    Start-Service sshd
  7. Reinicia tu computadora:
    Restart-Computer
  8. Use PowerShell para abrir el puerto TCP 22 en el Firewall de Windows para el tráfico SSH entrante: New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSHNew-NetFirewallRule: agregue el puerto 22 de la regla entranteNota. El comando anterior no funcionará en versiones antiguas de Windows de escritorio. En este caso se usa otro comando: netsh advfirewall firewall add rule name="SSH Port" dir=in action=allow protocol=TCP localport=22
  9. Abra el archivo de configuración SSHD (C: ProgramData SSH sshd_config) en cualquier editor de texto. Encuentre y verifique el valor del Subsistema sftp directiva. los sftp-server.exe El archivo debe especificarse aquí.archivo openssh sshd_config en Windows

Además, puede configurar los siguientes parámetros en el archivo de configuración sshd_config:

AllowGroups corpsftp_users # Permitir conectarse a OpenSSH solo para los usuarios de este grupo de dominio

AuthenticationMethods password # habilitar la autenticación de contraseña (no se pueden utilizar claves SSH)
ForceCommand internal-sftp
ChrootDirectory C:inetpubwwwrootftpfolder #directorio predeterminado para usuarios de SFTP

Prueba de la conexión SFTP con WinSCP

Intentemos conectarnos al servidor SSH creado usando el protocolo SFTP. Para hacerlo, use un WinSCP cliente.

En la ventana de configuración de la conexión, seleccione el SFTP como protocolo de transferencia de archivos, especifique el nombre del servidor y las credenciales de la cuenta de Windows, que se utiliza para la conexión (también es posible configurar la autenticación de clave).

Conexión sftp de prueba WinSCP

Cuando intenta conectarse por primera vez, aparece la siguiente notificación de la clave de host que no se encuentra en la caché local.

advertencia clave rsa2

Si todo está configurado correctamente, un cliente se conectaría al servidor SFTP y mostraría la lista de archivos en el directorio de inicio del usuario (por defecto, es el directorio con el perfil de usuario).

Usando la interfaz familiar del administrador de archivos (como Total Commander), puede copiar archivos entre el servidor y el cliente. Los archivos se transfieren mediante SFTP seguro.

conectar openssh en el servidor de Windows usando winscp

¿Cómo desinstalar Win32 OpenSSH?

Para desinstalar Win32 OpenSSH de su sistema correctamente:

  1. Ejecute la sesión elevada de PowerShell;
  2. Detenga el servicio SSHD:
    Stop-Service sshd
  3. Desinstale el servicio sshd: .uninstall-sshlsa.ps1
    sshd successfully uninstalled
    ssh-agent successfully uninstalled

Artículos Interesantes