Come configurare un server SSH su Windows Server

Panoramica

Questo articolo illustra come installare e configurare OpenSSH Server su Windows Server, abilitando l’autenticazione tramite chiave pubblica, configurando il servizio e aprendo le porte firewall necessarie.

Notazione delle variabili

Variabile Esempio Descrizione
<<SERVER>> 192.168.1.10 Nome host o indirizzo IP della macchina server

Passaggio 1: Installazione di OpenSSH Server

Aprire PowerShell con privilegi di amministratore ed eseguire:

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

Passaggio 2: Avvio e impostazione dell’avvio automatico

Dopo l’installazione, avviare il servizio SSH (sshd) e impostarlo per l’avvio automatico:

# Avvio del servizio
Start-Service sshd

# Abilitazione avvio automatico
Set-Service -Name sshd -StartupType Automatic

💡 Nota
Alla prima esecuzione, sshd genera automaticamente i file di configurazione e le chiavi host:

  • %ProgramData%\ssh\sshd_config — file di configurazione
  • %ProgramData%\ssh\ssh_host_* — chiavi host

Modificare la configurazione solo dopo che questi file sono stati creati.

Passaggio 3: Configurazione del firewall

Consentire il traffico SSH (porta 22) aggiungendo una regola di firewall:

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

Passaggio 4: Configurazione dell’autenticazione a chiave (consigliata)

  1. Guida alla generazione e configurazione delle chiavi SSH sul client

  2. Registrare la chiave pubblica in authorized_keys:

    • Per utenti standard: %UserProfile%\.ssh\authorized_keys
    • Per amministratori: %ProgramData%\ssh\administrators_authorized_keys
  3. Modificare il file sshd_config (in %ProgramData%\ssh\sshd_config) e assicurarsi che contenga:

    PubkeyAuthentication yes
    AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
    

Passaggio 5: Prima connessione e verifica

Da un client, connettersi come segue:

ssh Administrator@<<SERVER>>

Alla prima connessione, verrà richiesto di verificare la chiave host.
Dopo l’accesso, eseguire whoami per confermare l’utente connesso.

Passaggio 6: Limitazioni e sicurezza avanzata

Aggiungere o modificare i seguenti parametri in sshd_config:

Port 2222
AllowGroups SSHAdmins
AllowUsers Administrator deployuser
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
  • Port 2222 — cambia la porta predefinita (22) per ridurre gli attacchi automatici.
  • AllowGroups SSHAdmins — limita l’accesso ai membri del gruppo specificato.

    ℹ️ Nota
    In Windows Server 2025 e versioni successive, le restrizioni di gruppo per SSH possono essere abilitate di default. Alcuni sistemi linguistici possono non riconoscere correttamente il gruppo integrato “OpenSSH Users”.

  • AllowUsers Administrator deployuser — limita l’accesso a utenti specifici.
  • PasswordAuthentication no — disabilita l’autenticazione tramite password.
  • KbdInteractiveAuthentication no — disabilita metodi interattivi non sicuri.
  • PubkeyAuthentication yes — assicura l’autenticazione basata su chiavi.

Assicurarsi che il gruppo SSHAdmins e l’utente deployuser esistano e abbiano privilegi minimi.
Impostare LogLevel VERBOSE per una registrazione dettagliata degli accessi.

Passaggio 7: Verifica dei log

Per visualizzare i log recenti:

Get-WinEvent -LogName OpenSSH/Operational `
  | Where-Object { $_.TimeCreated -ge (Get-Date).AddHours(-1) } `
  | Select-Object TimeCreated, Id, LevelDisplayName, Message

💡 Suggerimento
Per verificare i log disponibili:

wevtutil el | findstr OpenSSH

Utilizzare il nome restituito nel parametro -LogName.

Conclusione

Configurando OpenSSH Server su Windows Server, si ottiene una gestione remota sicura e compatibile con ambienti Linux/Unix.
Seguendo questi passaggi — dalla configurazione del servizio all’autenticazione a chiave e al firewall — è possibile creare un’infrastruttura di amministrazione remota affidabile e sicura.