Condividi tramite


Configurazione del server di configurazione per Windows Server e Windows

Si applica a: Windows Server 2022, Windows Server 2019, Windows 10 (build 1809 e successive)

Il presente articolo descrive la configurazione specifica di Windows per il server OpenSSH (SSHD).

La documentazione dettagliata per le opzioni di configurazione di OpenSSH è disponibile online all'indirizzo OpenSSH.com e non è duplicata in questo set di documentazione.

File di configurazione OpenSSH

OpenSSH include file di configurazione per le impostazioni server e client. OpenSSH è open source e viene 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 di ssh_config e per i file di configurazione del server OpenSSH sono disponibili nella pagina manuale di sshd_config.

Per impostazione predefinita, Open SSH Server (sshd) legge i dati di configurazione da %programdata%\ssh\sshd_config, In alternativa, è possibile specificare un file di configurazione diverso avviando sshd.exe con il parametro -f. Se il file è assente, SSHD ne 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 parametro -F, 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 fornisce l'esperienza visualizzata da un utente quando esegue la connessione al server tramite SSH. La shell predefinita iniziale in Windows è la shell dei comandi di Windows (cmd.exe). Windows include anche le shell dei comandi di PowerShell e terze parti che possono essere configurate come shell predefinite per un server.

Per impostare la shell dei comandi predefinita, verifica innanzitutto che la cartella di installazione di OpenSSH si trovi nel percorso di sistema. Per Windows, la cartella di installazione predefinita è %systemdrive%\Windows\System32\openssh. Il comando seguente illustra l'impostazione del percorso corrente e aggiunge la cartella di installazione di OpenSSH predefinita al percorso.

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

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

Ad esempio, il seguente comando di PowerShell con privilegi elevati imposta la shell predefinita come 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

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

Gli elementi elencati di seguito forniscono una configurazione specifica di Windows possibile tramite le voci in sshd_config. Sono disponibili altre impostazioni di configurazione che non sono elencate in questo argomento, in quanto sono descritte in dettaglio nella documentazione online di OpenSSH Win32.

Suggerimento

OpenSSH Server (sshd) legge il file di configurazione all'avvio del servizio. Per le modifiche apportate al file di configurazione è necessario riavviare il servizio.

AllowGroups, AllowUsers, DenyGroups, DenyUsers

Il controllo degli utenti e dei gruppi che possono connettersi al server viene eseguito tramite 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 altre informazioni su PATTERNS e caratteri jolly nella ssh_config, vedere la pagina manuale sshd_config OpenBSD.

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

Gli utenti o gruppi del gruppo di lavoro e gli account connessi a Internet vengono sempre risolti con il nome dell'account locale (nessuna parte del dominio, simile ai nomi UNIX standard). Utenti e gruppi di dominio vengono risolti in modo rigoroso nel formato NameSamCompatible: nome_breve_dominio\nome_utente. Tutte le regole di configurazione basate su utenti o 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. Il consenso è inoltre riservato anche agli utenti membri dei gruppi contoso\sshusers e contoso\serveroperators.

DenyUsers contoso\admin@192.168.2.23
DenyUsers contoso\*
AllowGroups contoso\sshusers contoso\serveroperators

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

AllowUsers localuser@192.168.2.23
AllowGroups sshusers

AuthenticationMethods

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

Importante

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

AuthorizedKeysFile

Il valore predefinito è .ssh/authorized_keys. Se il percorso non è assoluto, viene preso 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 invece usato %programdata%/ssh/administrators_authorized_keys.

Suggerimento

Il file administrators_authorized_keys deve disporre solo delle voci di autorizzazione per l'account NT Authority\SYSTEM e il gruppo di sicurezza BUILTIN\Amministratori. All'account NT Authority\SYSTEM deve essere concesso il controllo completo. Il gruppo di sicurezza BUILTIN\Amministratori è necessario per consentire agli amministratori di gestire le chiavi autorizzate, pertanto è 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 le sessioni SFTP. Una sessione remota in cmd.exe non userà questa ChrootDirectory. Per configurare un server chroot solo SFTP, imposta ForceCommand su Internal-sftp. Puoi anche configurare SCP con chroot, implementando una shell personalizzata che consenta solo SCP e SFTP.

GSSAPIAuthentication

L'argomento di configurazione GSSAPIAuthentication specifica se è consentita l'autenticazione utente basata su GSSAPI. L'impostazione predefinita 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.

Di seguito è riportato 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

Di seguito sono indicati i valori predefiniti:

#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 le genera automaticamente all'avvio di un servizio.

Corrispondenza

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 applicabili in Windows. Per impedire l'accesso come amministratore, usa Amministratori con la direttiva DenyGroups.

SyslogFacility

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

Configuration Arguments (Argomenti di configurazione)

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

  • GSSAPIAuthentication

I seguenti argomenti di configurazione non sono disponibili nella versione di OpenSSH fornita in Windows Server e cliente Windows:

  • AcceptEnv
  • AllowStreamLocalForwarding
  • AuthorizedKeysCommand
  • AuthorizedKeysCommandUser
  • AuthorizedPrincipalsCommand
  • AuthorizedPrincipalsCommandUser
  • ExposeAuthInfo
  • GSSAPICleanupCredentials
  • GSSAPIStrictAcceptorCheck
  • HostbasedAcceptedKeyTypes
  • HostbasedAuthentication
  • HostbasedUsesNameFromPacketOnly
  • IgnoreRhosts
  • IgnoreUserKnownHosts
  • KbdInteractiveAuthentication
  • KerberosAuthentication
  • KerberosGetAFSToken
  • KerberosOrLocalPasswd
  • KerberosTicketCleanup
  • PermitTunnel
  • PermitUserEnvironment
  • PermitUserRC
  • PidFile
  • PrintLastLog
  • PrintMotd
  • RDomain
  • StreamLocalBindMask
  • StreamLocalBindUnlink
  • StrictModes
  • X11DisplayOffset
  • X11Forwarding
  • X11UseLocalhost
  • XAuthLocation