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

EUR

usa

USD

Italy It
Ex. VAT Ex. VAT 0%

Installazione, test e disinstallazione di un server SFTP basato su OpenSSH in Windows

Questa guida si applica a Windows Server 2019, 2022 e 2025, che includono OpenSSH Server come funzionalità opzionale integrata. Non è richiesto alcun download di terze parti.

Guida passo passo

Installazione della funzionalità OpenSSH Server

1) Avviare PowerShell come amministratore: Avvio, digitare "PowerShell" → fare clic con il pulsante destro del mouse 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

Verifica se la funzionalità OpenSSH Server è installata
Nota: Vengono elencati sia OpenSSH.Client sia OpenSSH.Server. Assicurarsi di verificare in particolare lo stato di OpenSSH.Server, il componente client potrebbe essere già installato e non è quello trattato in questa guida.

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

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

Installazione della funzionalità OpenSSH Server in PowerShell
Nota: Windows installa la funzionalità integrata OpenSSH Server in C:\Windows\System32\OpenSSH\. Non installare OpenSSH manualmente direttamente in C:\Windows, ciò viola le convenzioni sulle directory di Windows e può causare problemi di autorizzazioni.

3) Avviare il servizio sshd e impostarlo per l'avvio automatico:

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

4) Verificare che il servizio sia in esecuzione:

Get-Service sshd

Stato del servizio sshd di OpenSSH che mostra Running

Il campo Status dovrebbe mostrare Running. Per confermare anche che il tipo di avvio sia impostato su Automatic:

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

StartMode del servizio sshd che mostra Auto

5) Verificare il percorso del binario di OpenSSH installato e le informazioni sulla versione:

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

Percorso e informazioni sulla versione del binario sshd

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 normalmente crea automaticamente una regola firewall in entrata denominata OpenSSH-Server-In-TCP. Confermare che esista e sia abilitata:

Get-NetFirewallRule -Name *OpenSSH-Server*

Regola firewall in entrata di OpenSSH abilitata

Se la regola è assente, crearla manualmente (notare il nome della regola diverso, questa regola creata manualmente è separata 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 alla porta 22 riuscito

Un risultato TcpTestSucceeded : True conferma che il servizio è in ascolto localmente. Questo non conferma che il firewall stia lasciando passare il traffico dall'esterno, per verificarlo completamente, eseguire lo stesso comando da un'altra macchina della 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, Notepad eseguito come amministratore) e verificare che le seguenti impostazioni siano presenti (o configurate secondo necessità):

Port 22 PasswordAuthentication yes Subsystem sftp sftp-server.exe

Riga Subsystem sftp in sshd_config
Nota sulla sicurezza: PasswordAuthentication yes è mostrato qui per mantenere semplice questa guida, ma per un server di produzione esposto a Internet, l'autenticazione basata su chiavi con PasswordAuthentication no è la scelta più sicura. Vedere l'impostazione opzionale AuthorizedKeysFile più avanti se si intende utilizzare l'autenticazione basata su chiavi.
Importante: La riga Subsystem sftp definisce quale binario gestisce le sessioni SFTP. Senza questa riga presente e non commentata, le connessioni SSH funzioneranno, ma il trasferimento di file SFTP avrà esito negativo.

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

Nota: 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

Sia sftp-server.exe sia internal-sftp funzionano; questa guida utilizza sftp-server.exe poiché è il valore fornito per impostazione predefinita.

Impostazioni opzionali che si potrebbe voler includere anche in sshd_config:

# Valore predefinito, gia impostato; mostrato qui come riferimento se l'autenticazione basata su chiavi non funziona # AuthorizedKeysFile .ssh/authorized_keys # Limitare l'accesso a utenti specifici (opzionale) # AllowUsers username1 username2 # Registrazione SyslogFacility LOCAL0 LogLevel INFO

Nota: Per gli account che sono membri del gruppo locale Administrators, la versione di OpenSSH per Windows utilizza un file diverso: C:\ProgramData\ssh\administrators_authorized_keys, non .ssh\authorized_keys nel profilo dell'utente. Se l'autenticazione basata su chiavi per un account amministratore non funziona come previsto, controllare questo file.

Dopo qualsiasi modifica a sshd_config, riavviare il servizio per applicarla:

Restart-Service sshd

Verifica della connessione SFTP con 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 Host name, lasciare il campo Port number su 22 (a meno che non sia stata configurata una porta diversa) e inserire le credenziali dell'account Windows con cui ci si connette.

Finestra di accesso di WinSCP con il protocollo SFTP selezionato

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

WinSCP connesso al server SFTP che mostra la home directory

Disinstallazione della funzionalità OpenSSH Server

1) Avviare PowerShell come amministratore.

2) Arrestare il servizio sshd prima di rimuovere la funzionalità, rimuoverla mentre il servizio è ancora in esecuzione o in uso attivo può non riuscire o bloccarsi:

Stop-Service sshd

3) Rimuovere la funzionalità:

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

4) (Opzionale) Rimuovere la regola firewall. Questo copre sia la regola creata automaticamente sia quella creata manualmente, nel caso una delle due esista:

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

5) (Opzionale) 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 toccare 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

Avviso: La rimozione dell'intera cartella elimina anche in modo permanente le chiavi host del server. I client che si connettono dopo una reinstallazione tratteranno il server come un host SSH nuovo e non riconosciuto. Eseguire questa operazione solo se non si intende reinstallare OpenSSH Server con la stessa configurazione in seguito.

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