Instalación, prueba y desinstalación de un servidor SFTP basado en OpenSSH en Windows | INTROSERV
EUR
european

EUR

usa

USD

Spanish Es
Ex. VAT Ex. VAT 0%

Cómo configurar un servidor SFTP en Windows con OpenSSH

Esta guía es válida para Windows Server 2019, 2022 y 2025, que incluyen el servidor OpenSSH como una característica opcional integrada. No es necesario descargar ningún software de terceros.

Guía paso a paso

Instalación de la característica «Servidor OpenSSH»

1. Inicia PowerShell como administrador: Inicio, escribe«PowerShell» → haz clic con el botón derecho en«PowerShell» → Ejecutar como administrador.

2. Comprueba si la función OpenSSH Server ya está instalada:

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*' | Select-Object Name, State

Checking whether the OpenSSH Server feature is installed

Tip

Aquí aparecerán tanto OpenSSH.Client como OpenSSH.Server. Asegúrate de comprobar específicamente el estado de OpenSSH.Server, ya que el componente de cliente puede estar ya instalado y no es objeto de esta guía.

Si OpenSSH.Server muestra el estado «NotPresent», instálalo:

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Installing the OpenSSH Server feature in PowerShell

Warning

Windows instala la característica integrada «Servidor OpenSSH» en C:\Windows\System32\OpenSSH\. No instales OpenSSH manualmente directamente en C:\Windows, ya que esto incumple las convenciones de directorios de Windows y puede provocar problemas de permisos.

3. Inicia el servicio sshd y configúralo para que se inicie automáticamente:

Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic'

4. Comprueba que el servicio se está ejecutando:

Get-Service sshd

OpenSSH sshd service status showing Running

El campo «Estado » debería mostrar «En ejecución». Para confirmar también que el tipo de inicio está configurado en «Automático»:

Get-CimInstance Win32_Service -Filter "Name='sshd'" | Select-Object StartMode

sshd service StartMode showing Auto

5. Comprueba la ubicación del binario de OpenSSH instalado y la información de la versión:

Get-Command sshd | Select-Object Source (Get-Command sshd).FileVersionInfo

sshd binary path and version information

El campo «Fuente» confirma que la ruta de instalación coincide con C:\Windows\System32\OpenSSH\sshd.exe; «FileVersionInfo» muestra la versión de OpenSSH (por ejemplo, OpenSSH_8.1p1, FileVersion 8.1.0.1 en Windows Server 2022).

Apertura del puerto del cortafuegos

De forma predeterminada, al instalar la característica «Servidor OpenSSH» se crea automáticamente una regla de cortafuegos de entrada denominada «OpenSSH-Server-In-TCP ». Comprueba que existe y que está habilitada:

Get-NetFirewallRule -Name *OpenSSH-Server*

OpenSSH inbound firewall rule enabled

Si falta la regla, créela manualmente (tenga en cuenta que el nombre de la regla es diferente; esta regla creada manualmente es independiente de la regla OpenSSH-Server-In-TCP generada automáticamente):

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

Comprueba que el puerto está realmente abierto y a la escucha:

Test-NetConnection -ComputerName localhost -Port 22

Test-NetConnection to port 22 succeeded

Un resultado «TcpTestSucceeded : True» confirma que el servicio está a la escucha localmente. Esto no confirma que el cortafuegos esté dejando pasar el tráfico procedente del exterior; para verificarlo por completo, ejecute el mismo comando desde otro equipo de la red, sustituyendo «localhost» por la dirección IP del servidor.

Configuración de sshd_config para SFTP

El archivo de configuración se encuentra en:

C:\ProgramData\ssh\sshd_config

Ábrelo en un editor de texto con derechos de administrador (por ejemplo, el Bloc de notas ejecutado como administrador) y comprueba que los siguientes ajustes estén presentes (o configurados según sea necesario):

Port 22 PasswordAuthentication yes Subsystem sftp sftp-server.exe

sshd_config Subsystem sftp line

Info

Aquí se muestra«PasswordAuthentication yes» para simplificar esta guía, pero para un servidor de producción expuesto a Internet, la autenticación basada en claves con «PasswordAuthentication no» es la opción más segura. Consulta el ajuste opcional «AuthorizedKeysFile» más abajo si tienes previsto utilizar la autenticación basada en claves.

Warning

La línea «Subsystem sftp» define qué binario gestiona las sesiones SFTP. Si esta línea no está presente o no está descomentada, las conexiones SSH funcionarán, pero la transferencia de archivos SFTP fallará.

Por defecto, esta línea ya está presente y sin comentar en el archivo de configuración de la función integrada. Si falta o está comentada con #, añádela o quítale el comentario y, a continuación, guarda el archivo.

Info

Las versiones más recientes de OpenSSH también admiten «Subsystem sftp internal-sftp», un gestor integrado que no llama a un binario externo:

Subsystem sftp internal-sftp

Funcionan tanto sftp-server.exe como internal-sftp; en esta guía se utiliza sftp-server.exe, ya que es el valor predeterminado.

Configuraciones opcionales que quizá también desee incluir en sshd_config:

# Default value, already set; shown here for reference if key-based authentication isn't working # AuthorizedKeysFile .ssh/authorized_keys # Restrict access to specific users (optional) # AllowUsers username1 username2 # Logging SyslogFacility LOCAL0 LogLevel INFO

Info

Para las cuentas que forman parte del grupo local «Administradores», la versión de OpenSSH para Windows utiliza un archivo diferente: C:\ProgramData\ssh\administrators_authorized_keys, en lugar de .ssh\authorized_keys en el perfil del usuario. Si la autenticación basada en clave para una cuenta de administrador no funciona como se espera, comprueba este archivo en su lugar.

Tras cualquier cambio en sshd_config, reinicia el servicio para que se aplique:

Restart-Service sshd

Comprobación de la conexión SFTP con WinSCP

Instala y ejecuta el cliente gratuito WinSCP. En la ventana de configuración de la conexión, selecciona el protocolo de transferencia de archivos SFTP, introduce el nombre de host o la dirección IP del servidor en el campo «Nombre de host», deja el campo «Número de puerto» en 22 (a menos que hayas configurado un puerto diferente) e introduce las credenciales de la cuenta de Windows con la que te estás conectando.

WinSCP login window with SFTP protocol selected

Si todo está configurado correctamente, el cliente se conecta al servidor SFTP y muestra el contenido del directorio de inicio del usuario (el directorio de perfil predeterminado). De forma predeterminada, el usuario accede a C:\Users\<nombre de usuario>. A continuación, los archivos se pueden transferir de forma segura entre el servidor y el cliente a través del protocolo SFTP.

WinSCP connected to the SFTP server showing the home directory

Desinstalación de la función «Servidor OpenSSH»

1. Inicia PowerShell como administrador.

2. Detén el servicio sshd antes de eliminar la función; si la eliminas mientras el servicio sigue en ejecución o en uso activo, puede fallar o bloquearse:

Stop-Service sshd

3. Elimina la característica:

Remove-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

4. (Opcional) Elimina la regla del cortafuegos. Esto incluye tanto la regla creada automáticamente como la creada manualmente, en caso de que exista alguna de ellas:

Remove-NetFirewallRule -Name OpenSSH-Server-In-TCP -ErrorAction SilentlyContinue Remove-NetFirewallRule -DisplayName 'OpenSSH Server (sshd)' -ErrorAction SilentlyContinue

5. (Opcional) Eliminación de la configuración: puedes eliminar solo el archivo de configuración o realizar una limpieza completa que incluya las claves de host.

Para eliminar solo sshd_config sin tocar las claves de host:

Remove-Item -Path 'C:\ProgramData\ssh\sshd_config' -Force

Para realizar una limpieza completa que incluya las claves de host, elimina en su lugar toda la carpeta de configuración:

Remove-Item -Path 'C:\ProgramData\ssh' -Recurse -Force

Warning

Al eliminar toda la carpeta, también se borran de forma permanente las claves de host del servidor. Los clientes que se conecten tras la reinstalación tratarán al servidor como un nuevo host SSH no reconocido. Haz esto solo si no tienes previsto reinstalar OpenSSH Server con la misma configuración más adelante.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA