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:
- Los archivos y comandos se transfieren dentro de una sesión SSH segura;
- Se usa una conexión para enviar archivos y comandos;
- Se admiten enlaces simbólicos, interrupción / reanudación de la transferencia, funciones de eliminación de archivos, etc.
- Como regla general, en canales donde FTP es lento o falla, la conexión SFTP es más rápida y confiable;
- Posibilidad de autenticarse mediante claves 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).
- 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).
- Extraiga el archivo en el directorio de destino: C: OpenSSH-Win;
- Inicie la cli de PowerShell elevada y cambie a la carpeta OpenSSH:
Cd C:OpenSSH-Win
- 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);
- Instale el servidor OpenSSH:
.install-sshd.ps1
(debería aparecer un mensaje verde «Los servicios sshd y ssh-agent se instalaron correctamente”); - Genere claves SSH para el servidor (necesarias para iniciar el servicio sshd):
ssh-keygen.exe –A
ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519
- 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
- Reinicia tu computadora:
Restart-Computer
- 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 SSH
Nota. 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
- 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í.
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).
Cuando intenta conectarse por primera vez, aparece la siguiente notificación de la clave de host que no se encuentra en la caché local.
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.
¿Cómo desinstalar Win32 OpenSSH?
Para desinstalar Win32 OpenSSH de su sistema correctamente:
- Ejecute la sesión elevada de PowerShell;
- Detenga el servicio SSHD:
Stop-Service sshd
- Desinstale el servicio sshd:
.uninstall-sshlsa.ps1
sshd successfully uninstalled ssh-agent successfully uninstalled
Artículos Interesantes
Contenido