Condividi tramite


Configurazione del server OpenSSH per Windows Server e Windows

Questo articolo illustra la configurazione specifica di Windows per OpenSSH Server (sshd).

OpenSSH mantiene la documentazione dettagliata per le opzioni di configurazione online su OpenSSH.com, che non viene duplicata in questa raccolta di documentazione.

File di configurazione OpenSSH

OpenSSH include file di configurazione per le impostazioni server e client. OpenSSH è open source ed è stato aggiunto ai sistemi operativi Windows Server e Client Windows, a partire da Windows Server 2019 e Windows 10 (build 1809). Di conseguenza, la documentazione open source per i file di configurazione OpenSSH non viene ripetuta qui. I file di configurazione client e sono disponibili nella pagina manuale ssh_config e per i file di configurazione del server OpenSSH sono disponibili nella pagina manuale di sshd_config.

Open SSH Server (sshd) legge i dati di configurazione da %programdata%\ssh\sshd_config per impostazione predefinita oppure è possibile specificare un file di configurazione diverso avviando sshd.exe con il -f parametro . Se il file è assente, sshd genera uno con la configurazione predefinita all'avvio del servizio.

In Windows il client OpenSSH (ssh) legge i dati di configurazione da un file di configurazione nell'ordine seguente:

  1. Avviando ssh.exe con il -F parametro , specificando un percorso di un file di configurazione e un nome di voce da tale file.
  2. File di configurazione di un utente in %userprofile%\.ssh\config.
  3. File di configurazione a livello di sistema in%programdata%\ssh\ssh_config.

Configurazione della shell predefinita per OpenSSH in Windows

La shell dei comandi predefinita offre l'esperienza visualizzata dall'utente durante la connessione al server tramite SSH. L'impostazione predefinita iniziale di Windows è la shell dei comandi di Windows (cmd.exe). Windows include anche PowerShell e le shell dei comandi di terze parti sono disponibili anche per Windows e potrebbero essere configurate come shell predefinita per un server.

Per impostare la shell dei comandi predefinita, verificare prima di tutto che la cartella di installazione openSSH sia nel percorso di sistema. Per Windows, la cartella di installazione predefinita è %systemdrive%\Windows\System32\openssh. Il comando seguente mostra l'impostazione del percorso corrente e aggiunge la cartella di installazione OpenSSH predefinita.

Shell dei comandi Comando da usare
Comando path
PowerShell $env:path

La configurazione della shell ssh predefinita viene eseguita nel Registro di sistema di Windows aggiungendo il percorso completo all'eseguibile della shell a HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH nel valore di stringa DefaultShell.

Ad esempio, il comando di PowerShell con privilegi elevati seguente imposta la shell predefinita su powershell.exe:

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force

Configurazioni di Windows in sshd_config

In Windows sshd legge i dati di configurazione da %programdata%\ssh\sshd_config per impostazione predefinita oppure è possibile specificare un file di configurazione diverso avviando sshd.exe con il -f parametro . Se il file è assente, sshd genera uno con la configurazione predefinita all'avvio del servizio.

I seguenti elementi forniscono una configurazione specifica per Windows possibile tramite le voci in sshd_config. Esistono altre impostazioni di configurazione che non sono elencate qui, come sono descritte in dettaglio nella documentazione online di OpenSSH di Win32.

Suggerimento

OpenSSH Server (sshd) legge il file di configurazione all'avvio del servizio. Le modifiche apportate al file di configurazione richiedono il riavvio del servizio.

AllowGroups (ConsentiGruppi), AllowUsers (ConsentiUtenti), DenyGroups (NegaGruppi), DenyUsers (NegaUtenti)

Controllare quali utenti e gruppi possono connettersi al server usando le direttive AllowGroups, AllowUsers, DenyGroups e DenyUsers . Le direttive allow/deny vengono elaborate nell'ordine seguente: DenyUsers, AllowUsers, DenyGroups e infine AllowGroups. Tutti i nomi degli account devono essere specificati in lettere minuscole. Per ulteriori informazioni su PATTERNS e caratteri jolly nella ssh_config, consultare la pagina del manuale sshd_config OpenBSD.

Quando si configurano regole basate su utenti/gruppi con un utente o un gruppo di dominio, usare il formato seguente: user?domain*. Windows consente più formati per specificare le entità di dominio, ma potrebbe essere in conflitto con i modelli Linux standard. Per questo motivo, * viene aggiunto per coprire i nomi di dominio completi. Inoltre, questo approccio usa ?, invece di @, per evitare conflitti con il formato username@host.

Gli utenti/gruppi del gruppo di lavoro e gli account connessi a Internet corrispondono sempre ai loro nomi di account locali (nessuna parte di dominio, simile ai nomi Unix standard). Gli utenti e i gruppi di dominio vengono risolti rigorosamente nel formato NameSamCompatible : domain_short_name\user_name. Tutte le regole di configurazione basate su utenti/gruppi devono rispettare questo formato.

L'esempio seguente nega contoso\admin dall'host 192.168.2.23 e blocca tutti gli utenti dal dominio contoso. Consente inoltre agli utenti che fanno parte dei gruppi contoso\sshusers e contoso\serveroperators.

DenyUsers contoso\[email protected]
DenyUsers contoso\*
AllowGroups contoso\sshusers contoso\serveroperators

L'esempio seguente consente agli utenti locali di accedere dall'host 192.168.2.23 e consente ai membri del gruppo "sshusers".

AllowUsers [email protected]
AllowGroups sshusers

Metodi di Autenticazione

Per Windows OpenSSH, gli unici metodi di autenticazione disponibili sono password e publickey.

Importante

L'autenticazione con un account Microsoft Entra non è attualmente supportata.

FileChiaviAutorizzate

Il valore predefinito è .ssh/authorized_keys. Se il percorso non è assoluto, viene visualizzato in relazione alla home directory dell'utente (o al percorso dell'immagine del profilo), ad esempio C:\Users\username. Se l'utente appartiene al gruppo di amministratori, viene usato %programdata%/ssh/administrators_authorized_keys .

Suggerimento

Il file administrators_authorized_keys deve avere solo le voci di autorizzazione per l'account NT Authority\SYSTEM e il gruppo di sicurezza BUILTIN\Administrators. All'account NT Authority\SYSTEM deve essere concesso il controllo completo. Il gruppo di sicurezza BUILTIN\Administrators è necessario per consentire agli amministratori di gestire le chiavi autorizzate, è possibile scegliere l'accesso necessario. Per concedere le autorizzazioni, è possibile aprire un prompt di PowerShell con privilegi elevati ed eseguire il comando icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F".

ChrootDirectory (supporto aggiunto nella versione 7.7.0.0)

Questa direttiva è supportata solo con sessioni sftp. Una sessione remota in cmd.exe non rispetterebbe il ChrootDirectory. Per configurare un server chroot solo sftp, impostare il parametro ForceCommand su internal-sftp. È anche possibile configurare scp con chroot implementando una shell personalizzata che consenta solo scp e sftp.

Autenticazione GSSAPI

L'argomento GSSAPIAuthentication di configurazione specifica se è consentita l'autenticazione utente basata su GSSAPI. Il valore predefinito per GSSAPIAuthentication è no.

L'autenticazione GSSAPI richiede anche l'uso dell'opzione -K che specifica il nome host quando si usa il client OpenSSH. In alternativa, è possibile creare una voce corrispondente nella configurazione del client SSH. In Windows il client OpenSSH legge i dati di configurazione da %userprofile%.ssh\config per impostazione predefinita.

È possibile visualizzare un esempio di configurazione del client OpenSSH GSSAPI:

# Specify a set of configuration arguments for a host matching the pattern SERVER01.contoso.com
# Patterns are case sensitive
Host SERVER01.contoso.com
    # Enables GSSAPI authentication
    GSSAPIAuthentication yes
    # Forward (delegate) credentials to the server.
    GSSAPIDelegateCredentials yes

Importante

GSSAPI è disponibile solo a partire da Windows Server 2022, Windows 11 e Windows 10 xxxx.

HostKey

Le impostazioni predefinite sono:

#HostKey __PROGRAMDATA__/ssh/ssh_host_rsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_dsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ecdsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ed25519_key

Se le impostazioni predefinite non sono presenti, sshd li genera automaticamente all'avvio di un servizio.

Partita

Corrisponde alle condizioni usando uno o più criteri. In caso di corrispondenza, vengono applicati gli argomenti di configurazione successivi. Le corrispondenze usano le regole del modello descritte nella sezione AllowGroups, AllowUsers, DenyGroups, DenyUsers . I nomi di utenti e gruppi devono essere in lettere minuscole.

PermitRootLogin

Non applicabile in Windows. Per impedire l'accesso degli amministratori, usare amministratori con direttiva DenyGroups .

SyslogFacility

Se è necessaria la registrazione basata su file, usare LOCAL0. I log vengono generati in %programdata%\ssh\logs. Per qualsiasi altro valore, incluso il valore predefinito, AUTH indirizza la registrazione a ETW. Per altre info, vedi Funzionalità di registrazione in Windows.

Argomenti di configurazione

L'argomento di configurazione seguente è disponibile a partire da Windows Server 2022, Windows 11 e Windows 10 xxxx:

  • GSSAPIAuthentication

Gli argomenti di configurazione seguenti non sono disponibili nella versione OpenSSH fornita in Windows Server e nel client Windows:

  • AcceptEnv
  • Consenti Stream Local Forwarding
  • AuthorizedKeysCommand
  • UtenteCommandChiaviAutorizzate
  • ComandoPrincipiAutorizzati
  • UtenteComandoPrincipaliAutorizzati
  • ExposeAuthInfo
  • GSSAPICleanupCredentials
  • GSSAPIStrictAcceptorCheck
  • HostbasedAcceptedKeyTypes
  • Autenticazione basata su host
  • HostbasedUsesNameFromPacketOnly
  • IgnoreRhosts
  • IgnoraUtenteHostConosciuti
  • KbdInteractiveAuthentication
  • KerberosAuthentication
  • KerberosGetAFSToken
  • KerberosOrLocalPasswd
  • KerberosTicketCleanup
  • PermitTunnel
  • PermettereAmbienteUtente
  • PermitUserRC
  • PidFile
  • StampaUltimoRegistro
  • PrintMotd
  • RDomain
  • StreamLocalBindMask
  • StreamLocalBindUnlink
  • StrictModes
  • X11DisplayOffset
  • X11Forwarding
  • X11UseLocalhost
  • XAuthLocation