Installazione, verifica del funzionamento e disinstallazione di un server SFTP basato su OpenSSH in Windows | INTROSERV
EUR
european

EUR

usa

USD

Italy It
Ex. VAT Ex. VAT 0%

Come configurare un server SFTP su Windows con OpenSSH

Questa guida è valida per Windows Server 2019, 2022 e 2025, che includono OpenSSH Server come funzionalità opzionale integrata. Non è necessario scaricare alcun software di terze parti.

Guida passo passo

Installazione della funzionalità OpenSSH Server

1. Avviare PowerShell come amministratore: Start, digitare "PowerShell" → fare clic con il tasto destro su "PowerShell" → Esegui come amministratore.

2. Verificare se la funzionalità OpenSSH Server è già installata:

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

Checking whether the OpenSSH Server feature is installed

Tip

Verranno elencati sia OpenSSH.Client che OpenSSH.Server. Assicurati di controllare specificatamente lo stato di OpenSSH.Server; il componente client potrebbe essere già installato e non è oggetto di questa guida.

Se OpenSSH.Server mostra lo stato: NotPresent, installarlo:

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

Installing the OpenSSH Server feature in PowerShell

Warning

Windows installa la funzionalità Server OpenSSH integrata in C:\Windows\System32\OpenSSH\. Non installare OpenSSH manualmente direttamente in C:\Windows, poiché ciò viola le convenzioni delle directory di Windows e potrebbe causare problemi di autorizzazione.

3. Avvia il servizio sshd e imposta l’avvio automatico:

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

4. Verificare che il servizio sia in esecuzione:

Get-Service sshd

OpenSSH sshd service status showing Running

Il campo "Stato" dovrebbe indicare " In esecuzione". Per confermare che il tipo di avvio sia impostato su "Automatico":

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

sshd service StartMode showing Auto

5. Controllare il percorso del file binario di OpenSSH installato e le informazioni sulla versione:

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

sshd binary path and version information

Il campo "Source" conferma che il percorso di installazione corrisponde a C:\Windows\System32\OpenSSH\sshd.exe; "FileVersionInfo" mostra la versione di OpenSSH (ad esempio, OpenSSH_8.1p1, FileVersion 8.1.0.1 su Windows Server 2022).

Apertura della porta del firewall

Per impostazione predefinita, l’installazione della funzionalità OpenSSH Server crea normalmente e automaticamente una regola del firewall in entrata denominata OpenSSH-Server-In-TCP. Verificare che esista e che sia abilitata:

Get-NetFirewallRule -Name *OpenSSH-Server*

OpenSSH inbound firewall rule enabled

Se la regola non è presente, crearla manualmente (notare il nome diverso della regola; questa regola creata manualmente è distinta dalla regola OpenSSH-Server-In-TCP generata automaticamente):

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

Verificare che la porta sia effettivamente aperta e in ascolto:

Test-NetConnection -ComputerName localhost -Port 22

Test-NetConnection to port 22 succeeded

Un risultato TcpTestSucceeded : True conferma che il servizio è in ascolto localmente. Ciò non conferma che il firewall lasci passare il traffico dall’esterno; per verificare completamente, esegui lo stesso comando da un altro computer sulla rete, sostituendo localhost con l’indirizzo IP del server.

Configurazione di sshd_config per SFTP

Il file di configurazione si trova in:

C:\ProgramData\ssh\sshd_config

Aprirlo in un editor di testo con diritti di amministratore (ad esempio, Blocco note eseguito come amministratore) e verificare che siano presenti le seguenti impostazioni (o che siano configurate come necessario):

Port 22 PasswordAuthentication yes Subsystem sftp sftp-server.exe

sshd_config Subsystem sftp line

Info

L'opzione`PasswordAuthentication yes` è riportata qui per semplificare questa guida, ma per un server di produzione esposto a Internet, l'autenticazione basata su chiave con `PasswordAuthentication no` è la scelta più sicura. Consulta l'impostazione opzionale `AuthorizedKeysFile` riportata di seguito se intendi utilizzare l'autenticazione basata su chiave.

Warning

La riga Subsystem sftp definisce quale binario gestisce le sessioni SFTP. Se questa riga non è presente o non è scommentata, le connessioni SSH funzioneranno ma il trasferimento di file SFTP fallirà.

Per impostazione predefinita, questa riga è già presente e non commentata nel file di configurazione della funzionalità integrata. Se manca o è commentata con #, aggiungerla o rimuovere il commento, quindi salvare il file.

Info

Le versioni più recenti di OpenSSH supportano anche ` Subsystem sftp internal-sftp`, un gestore integrato che non richiama un binario esterno:

Subsystem sftp internal-sftp

Funzionano sia sftp-server.exe che internal-sftp; questa guida utilizza sftp-server.exe poiché è il valore predefinito.

Impostazioni opzionali che potresti voler aggiungere in 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

Per gli account che fanno parte del gruppo Administrators locale, la versione per Windows di OpenSSH utilizza un file diverso: C:\ProgramData\ssh\administrators_authorized_keys, anziché .ssh\authorized_keys nel profilo dell’utente. Se l’autenticazione basata su chiave per un account amministratore non funziona come previsto, controllare invece questo file.

Dopo aver apportato qualsiasi modifica al file sshd_config, riavvia il servizio per applicare le modifiche:

Restart-Service sshd

Verifica della connessione SFTP tramite WinSCP

Installare ed eseguire il client gratuito WinSCP. Nella finestra delle impostazioni di connessione, selezionare il protocollo di trasferimento file SFTP, inserire il nome host o l’indirizzo IP del server nel campo Nome host, lasciare il campo Numero porta impostato su 22 (a meno che non sia stata configurata una porta diversa) e inserire le credenziali dell’account Windows con cui ci si sta connettendo.

WinSCP login window with SFTP protocol selected

Se tutto è configurato correttamente, il client si connette al server SFTP e visualizza il contenuto della directory home dell’utente (la directory del profilo predefinita). Per impostazione predefinita, l’utente accede a C:\Users\<nome utente>. I file possono quindi essere trasferiti in modo sicuro tra il server e il client tramite il protocollo SFTP.

WinSCP connected to the SFTP server showing the home directory

Disinstallazione della funzionalità Server OpenSSH

1. Avviare PowerShell come amministratore.

2. Arrestare il servizio sshd prima di rimuovere la funzionalità; la rimozione mentre il servizio è ancora in esecuzione o in uso attivo può causare un errore o un blocco:

Stop-Service sshd

3. Rimuovere la funzionalità:

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

4. (Facoltativo) Rimuovere la regola del firewall. Ciò riguarda sia la regola creata automaticamente che quella creata manualmente, qualora una delle due fosse presente:

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

5. (Facoltativo) Rimozione della configurazione: è possibile rimuovere solo il file di configurazione oppure eseguire una pulizia completa, comprese le chiavi host.

Per rimuovere solo sshd_config senza modificare le chiavi host:

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

Per una pulizia completa, comprese le chiavi host, rimuovere invece l’intera cartella di configurazione:

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

Warning

La rimozione dell’intera cartella comporta anche l’eliminazione definitiva delle chiavi host del server. I client che si connetteranno dopo la reinstallazione tratteranno il server come un nuovo host SSH non riconosciuto. Eseguire questa operazione solo se non si intende reinstallare OpenSSH Server con la stessa configurazione in un secondo momento.

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