sshd_config

Configura il server OpenSSH: ascolto, autenticazione, inoltro, controllo degli accessi e logging.

Prima di eseguire

La configurazione del server è distinta dal client ssh_config. I percorsi, le opzioni supportate e le impostazioni predefinite dipendono dal sistema operativo e dalla versione di OpenSSH. Mantieni aperta una sessione amministrativa esistente e disponibile un percorso di ripristino. Prima di applicare le modifiche, convalidare la configurazione effettiva con sshd -t e controllare le impostazioni effettive con sshd -T; questi comandi potrebbero richiedere privilegi di amministratore. Verificare un secondo accesso prima di chiudere la sessione originale. Non copiare ciecamente i valori di esempio.

Dopo aver applicato le modifiche, verifica in una nuova sessione SSH che l’accesso e il funzionamento previsto siano corretti. Mantieni aperta la sessione attuale fino alla verifica, così da poter ripristinare la configurazione se necessario.

Esempi

Esempio di configurazione del server. Adatta l'autenticazione, i percorsi e le regole di accesso al tuo ambiente.

Port 22
PermitRootLogin no
PubkeyAuthentication yes
AllowTcpForwarding yes

Convalida la sintassi e controlla le impostazioni effettive del server prima di applicare le modifiche.

sudo sshd -t
sudo sshd -T

Opzioni ed esempi

PortComune

Porta TCP in ascolto; sono consentite più direttive Port. Assicurarsi che il firewall e i client consentano la porta scelta.

Esempio
Port 2222
ListenAddressComune

Indirizzo locale su cui sshd è in ascolto. Un indirizzo può includere una porta; assicurarsi che esista sul server.

Esempio
ListenAddress 192.0.2.10
AddressFamily

Seleziona la famiglia di indirizzi: qualsiasi, inet per IPv4 o inet6 per IPv6.

Esempio
AddressFamily inet
HostKeyComune

Percorso della chiave host privata del server; questa non è la chiave di autenticazione dell'utente. Proteggi il file privato.

Esempio
HostKey /etc/ssh/ssh_host_ed25519_key
HostCertificate

Percorso di un certificato host del server che corrisponde a una chiave host configurata.

Esempio
HostCertificate /etc/ssh/ssh_host_ed25519_key-cert.pub
PasswordAuthenticationComune

Consenti o nega l'autenticazione della password. Verifica un altro metodo di accesso prima di disabilitarlo.

Esempio
PasswordAuthentication no
PubkeyAuthenticationComune

Consenti o nega l'autenticazione con chiave pubblica. Le autorizzazioni del server e le chiavi autorizzate continuano a essere valide.

Esempio
PubkeyAuthentication yes
KbdInteractiveAuthenticationComune

Consenti l'autenticazione interattiva da tastiera. Le richieste e i metodi disponibili dipendono dal server e dal backend di autenticazione.

Esempio
KbdInteractiveAuthentication yes
AuthenticationMethodsComune

Richiedere uno degli elenchi di metodi separati da spazi; ogni metodo separato da virgole in un elenco deve avere esito positivo. Ciascun metodo deve inoltre essere abilitato.

Esempio
AuthenticationMethods publickey,keyboard-interactive
PermitRootLoginComune

Controlla l'accesso root: sì, proibisci la password, solo comandi forzati o no. Testare prima un accesso amministrativo alternativo.

Esempio
PermitRootLogin no
PermitEmptyPasswords

Consenti agli account con password vuote di autenticarsi utilizzando l'autenticazione tramite password. Abilitarlo non è sicuro.

Esempio
PermitEmptyPasswords no
AuthorizedKeysFileComune

Percorsi di file contenenti chiavi pubbliche autorizzate. I percorsi relativi vengono risolti dalla directory home dell'utente; i token sono supportati.

Esempio
AuthorizedKeysFile .ssh/authorized_keys
StrictModesComune

Controlla la proprietà e le autorizzazioni dei file utente e delle directory home prima di accettare l'accesso.

Esempio
StrictModes yes
AllowUsersComune

Consenti solo i modelli di nome utente elencati; I modelli USER@HOST possono vincolare l'origine. L'accesso all'account è soggetto anche ad altre restrizioni.

Esempio
AllowUsers alice bob
DenyUsers

Nega modelli di nomi utente corrispondenti. Le regole Nega hanno la precedenza sulle regole Consenti corrispondenti.

Esempio
DenyUsers guest
AllowGroups

Consenti solo gli utenti nei gruppi denominati corrispondenti, soggetti ad altre regole di accesso.

Esempio
AllowGroups sshusers
DenyGroups

Nega agli utenti la corrispondenza nei gruppi denominati; vengono utilizzati i nomi dei gruppi e non gli ID numerici.

Esempio
DenyGroups restricted
AllowTcpForwardingComune

Controlla l'inoltro TCP: sì o tutti, no, locale o remoto. Questo da solo non può impedire l'inoltro da parte di utenti con accesso illimitato alla shell.

Esempio
AllowTcpForwarding local
DisableForwarding

Disabilita le funzionalità di inoltro, ignorando altre impostazioni di inoltro. Ciò può interrompere i tunnel e l'agente o l'inoltro X11.

Esempio
DisableForwarding yes
GatewayPortsComune

Controlla gli indirizzi di collegamento dell'inoltro remoto: no collega il loopback, sì lega il carattere jolly e clientspecificato consente gli indirizzi selezionati dal client. L'esposizione delle porte ha implicazioni sulla sicurezza.

Esempio
GatewayPorts no
PermitOpen

Limitare le destinazioni per l'inoltro TCP locale; utilizzare le voci host:porta, qualsiasi o nessuna. I nomi non vengono risolti per la corrispondenza.

Esempio
PermitOpen db.example.com:5432
PermitListen

Limitare gli indirizzi e le porte di ascolto per l'inoltro remoto; GatewayPorts influisce anche sull'associazione.

Esempio
PermitListen localhost:18080
AllowAgentForwarding

Consenti l'inoltro dell'agente di autenticazione SSH. Un processo remoto con accesso al socket dell'agente può richiedere firme.

Esempio
AllowAgentForwarding no
AllowStreamLocalForwarding

Controlla l'inoltro del socket del dominio Unix: sì o tutti, no, locale o remoto.

Esempio
AllowStreamLocalForwarding no
X11Forwarding

Abilita l'inoltro del display X11. Abilita solo dove necessario e comprendi il rischio di accesso remoto al display.

Esempio
X11Forwarding no
MaxAuthTriesComune

Numero massimo di tentativi di autenticazione per connessione prima della disconnessione. Il server potrebbe registrare gli errori in precedenza.

Esempio
MaxAuthTries 4
MaxSessionsComune

Numero massimo di sessioni di shell, accesso o sottosistema per connessione SSH. L'impostazione su zero impedisce le sessioni ma può comunque consentire l'inoltro.

Esempio
MaxSessions 10
MaxStartupsComune

Limita le connessioni non autenticate. Il modulo start:rate:full rifiuta progressivamente le connessioni sotto carico.

Esempio
MaxStartups 10:30:100
LoginGraceTimeComune

Tempo concesso per l'autenticazione; una durata pari a zero significa nessun limite di tempo.

Esempio
LoginGraceTime 60s
ClientAliveIntervalComune

Intervallo in secondi per le sonde client-alive crittografate a livello SSH; zero disabilita queste sonde.

Esempio
ClientAliveInterval 30
ClientAliveCountMaxComune

Numero di sondaggi client-vivo a livello SSH senza risposta tollerati prima della disconnessione. Utilizzare con ClientAliveInterval.

Esempio
ClientAliveCountMax 3
TCPKeepAlive

Controlla i messaggi keepalive TCP. Questi sono separati dalle sonde client-alive SSH crittografate.

Esempio
TCPKeepAlive yes
UsePAMComune

Abilita l'integrazione PAM sulle build che la supportano. La politica PAM e i metodi di autenticazione disponibili variano in base al sistema.

Esempio
UsePAM yes
PermitTTY

Consenti l'allocazione di uno pseudo-terminale. La sua disabilitazione influisce sulle sessioni interattive.

Esempio
PermitTTY yes
ForceCommand

Sostituisci il comando richiesto con un comando fisso. Convalidare attentamente l'accesso e le restrizioni prima di abilitarli.

Esempio
ForceCommand internal-sftp
SubsystemComune

Definire un sottosistema denominato e il relativo comando; internal-sftp è il server SFTP integrato.

Esempio
Subsystem sftp internal-sftp
ChrootDirectory

Limitare una sessione a una directory dopo l'autenticazione. La proprietà e le autorizzazioni della directory sono rigorosamente controllate; fornire i file richiesti per la sessione prevista.

Esempio
ChrootDirectory /srv/sftp/%u
MatchComune

Avvia un blocco condizionale per la corrispondenza di utenti, gruppi, indirizzi o altri criteri supportati. Al suo interno sono ammesse solo alcune direttive.

Esempio
Match User sftpuser
    ForceCommand internal-sftp
IncludeComune

Includi file di configurazione per percorso o glob. L'ordine è importante perché generalmente si applica il primo valore ottenuto.

Esempio
Include /etc/ssh/sshd_config.d/*.conf
LogLevelComune

Imposta il livello di dettaglio della registrazione, ad esempio QUIET, FATAL, ERROR, INFO, VERBOSE o DEBUG. I registri dettagliati potrebbero esporre informazioni riservate.

Esempio
LogLevel INFO
SyslogFacility

Scegli la struttura syslog utilizzata per i messaggi del server SSH; la configurazione della registrazione del sistema determina dove appaiono.

Esempio
SyslogFacility AUTH
Banner

Invia il contenuto di un file specificato prima dell'autenticazione. Non utilizzare nessuno per disabilitare un banner configurato.

Esempio
Banner /etc/issue.net
AcceptEnv

Consenti variabili di ambiente denominate fornite dal client. Alcune variabili possono ignorare gli ambienti limitati, quindi consenti solo ciò che è necessario.

Esempio
AcceptEnv LANG LC_*
PermitUserEnvironment

Controlla le impostazioni dell'ambiente fornite dall'utente. Abilitandoli è possibile aggirare le restrizioni attraverso le variabili di ambiente.

Esempio
PermitUserEnvironment no
PrintMotd

Controlla se sshd stampa il messaggio del giorno all'accesso interattivo. Anche PAM o un altro servizio potrebbero stamparlo.

Esempio
PrintMotd no
Compression

Controllare la compressione. I valori e i tempi supportati variano in base alla versione di OpenSSH.

Esempio
Compression no
RekeyLimit

Imposta la soglia dei dati e facoltativamente l'intervallo di tempo per la ricodifica. Utilizzare valori appropriati per la versione del server.

Esempio
RekeyLimit 1G 1h
Ciphers

Seleziona gli algoritmi di crittografia consentiti. La sostituzione dell'elenco predefinito può ridurre la compatibilità; utilizzare la crittografia ssh -Q per ispezionare gli algoritmi supportati dal client.

Esempio
Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.com
KexAlgorithms

Seleziona gli algoritmi di scambio delle chiavi. Limitare questo elenco può interrompere i client; verificare il supporto su entrambi i lati.

Esempio
KexAlgorithms curve25519-sha256
PubkeyAcceptedAlgorithms

Selezionare gli algoritmi di firma a chiave pubblica consentiti per l'autenticazione dell'utente. Verificare la compatibilità prima di modificare l'elenco predefinito.

Esempio
PubkeyAcceptedAlgorithms ssh-ed25519
HostKeyAlgorithms

Seleziona gli algoritmi di firma della chiave host offerti dal server. La chiave host configurata deve supportare l'algoritmo scelto.

Esempio
HostKeyAlgorithms ssh-ed25519
TrustedUserCAKeys

File contenente le chiavi pubbliche dell'autorità di certificazione dell'utente attendibile per l'autenticazione del certificato.

Esempio
TrustedUserCAKeys /etc/ssh/user_ca.pub
RevokedKeys

File contenente chiavi pubbliche revocate o un elenco di revoche di chiavi. Un file configurato mancante o illeggibile può impedire l'autenticazione con chiave pubblica.

Esempio
RevokedKeys /etc/ssh/revoked_keys
AuthorizedPrincipalsFile

Entità di elenco dei file consentite per un certificato utente firmato da una CA attendibile; l'espansione dei token è supportata.

Esempio
AuthorizedPrincipalsFile /etc/ssh/auth_principals/%u
VersionAddendum

Aggiungi testo al banner del protocollo SSH; nessuno disabilita il testo aggiunto.

Esempio
VersionAddendum none
AuthorizedKeysCommand

Esegui un programma affidabile di proprietà root per ottenere le chiavi pubbliche. Configura il suo account di esecuzione e segui i requisiti di proprietà del manuale.

Esempio
AuthorizedKeysCommand /usr/local/libexec/ssh-keys %u
AuthorizedKeysCommandUser

Account utilizzato per eseguire AuthorizedKeysCommand; si consiglia un account dedicato.

Esempio
AuthorizedKeysCommandUser sshkeys
AuthorizedPrincipalsCommand

Eseguire un programma attendibile per ottenere le entità certificato consentite. Configura il suo account di esecuzione separatamente.

Esempio
AuthorizedPrincipalsCommand /usr/local/libexec/ssh-principals %u
AuthorizedPrincipalsCommandUser

Account utilizzato per eseguire AuthorizedPrincipalsCommand; utilizzare un account dedicato.

Esempio
AuthorizedPrincipalsCommandUser sshprincipals
CASignatureAlgorithms

Limita gli algoritmi di firma dell'autorità di certificazione accettati per i certificati SSH. Verificare la compatibilità tra CA e client prima delle modifiche.

Esempio
CASignatureAlgorithms ssh-ed25519
ChannelTimeout

Scadenza dei canali inattivi per tipo di canale e durata; la disponibilità e i tipi di canali supportati dipendono dalla versione. La scadenza non deve necessariamente terminare la connessione SSH.

Esempio
ChannelTimeout session=1h
ExposeAuthInfo

Esporre le informazioni di autenticazione tramite un file temporaneo a cui fa riferimento SSH_USER_AUTH; prendere in considerazione l'accesso ai dettagli di autenticazione.

Esempio
ExposeAuthInfo no
FingerprintHash

Seleziona l'hash utilizzato per le impronte digitali delle chiavi, come sha256 o md5. Preferisco SHA-256.

Esempio
FingerprintHash sha256
GSSAPIAuthentication

Controlla l'autenticazione utente GSSAPI quando supportata dalla build del server.

Esempio
GSSAPIAuthentication no
GSSAPICleanupCredentials

Controlla se le credenziali GSSAPI delegate vengono distrutte al momento del logout; il supporto per la creazione varia.

Esempio
GSSAPICleanupCredentials yes
GSSAPIDelegateCredentials

Controlla la memorizzazione delle credenziali GSSAPI delegate per le sessioni utente, quando supportate.

Esempio
GSSAPIDelegateCredentials no
GSSAPIStrictAcceptorCheck

Controlla se il server richiede l'identità host GSSAPI corretta. La disabilitazione della verifica ha implicazioni sulla sicurezza.

Esempio
GSSAPIStrictAcceptorCheck yes
HostbasedAcceptedAlgorithms

Seleziona gli algoritmi accettati per l'autenticazione basata su host. La disponibilità varia in base alla versione di OpenSSH.

Esempio
HostbasedAcceptedAlgorithms ssh-ed25519
HostbasedAuthentication

Controllare l'autenticazione basata su host; richiede ulteriore fiducia e configurazione dell'host.

Esempio
HostbasedAuthentication no
HostbasedUsesNameFromPacketOnly

Controlla se l'autenticazione basata su host utilizza il nome fornito dal client anziché il DNS. Esaminare le implicazioni sulla fiducia.

Esempio
HostbasedUsesNameFromPacketOnly no
HostKeyAgent

Specificare il socket dell'agente utilizzato per accedere alle chiavi private dell'host. L'agente e il relativo socket devono essere disponibili su sshd.

Esempio
HostKeyAgent /run/ssh-hostkey-agent.sock
IgnoreRhosts

Controllare l'uso dei file rhost o shost per utente per l'autenticazione basata su host; i valori accettati variano in base alla versione.

Esempio
IgnoreRhosts yes
IgnoreUserKnownHosts

Controlla se i fileknown_hosts specifici dell'utente vengono ignorati durante l'autenticazione basata sull'host.

Esempio
IgnoreUserKnownHosts yes
KerberosAuthentication

Controlla l'autenticazione della password Kerberos quando creata e configurata con il supporto Kerberos.

Esempio
KerberosAuthentication no
KerberosGetAFSToken

Controlla l'ottenimento di un token AFS per un utente autenticato Kerberos laddove la build lo supporta.

Esempio
KerberosGetAFSToken no
KerberosOrLocalPasswd

Controlla se la convalida della password Kerberos non riuscita ricorre all'autenticazione della password locale.

Esempio
KerberosOrLocalPasswd no
KerberosTicketCleanup

Controlla la rimozione della cache dei ticket Kerberos di un utente al momento della disconnessione, ove supportato.

Esempio
KerberosTicketCleanup yes
LogVerbose

Sostituisci la verbosità della registrazione per la corrispondenza delle posizioni di origine. È destinato alla risoluzione dei problemi e potrebbe esporre informazioni sensibili.

Esempio
LogVerbose kex.c:*:1000
ModuliFile

Percorso del file dei moduli utilizzato per lo scambio del gruppo Diffie-Hellman; mantenerlo secondo le indicazioni della piattaforma.

Esempio
ModuliFile /etc/ssh/moduli
PAMServiceName

Seleziona il nome del servizio PAM sulle build che supportano questa direttiva; La policy PAM per il servizio selezionato deve esistere.

Esempio
PAMServiceName sshd
PermitTunnel

Controlla l'inoltro del dispositivo: sì, punto a punto, Ethernet o no. Potrebbero essere necessari privilegi di sistema e configurazioni aggiuntivi.

Esempio
PermitTunnel no
PermitUserRC

Controlla l'esecuzione del file rc SSH dell'utente. La sua disabilitazione può influire sulla configurazione della sessione utente.

Esempio
PermitUserRC no
PerSourceMaxStartups

Limitare le connessioni simultanee non autenticate per indirizzo di origine o gruppo di origine; il supporto della versione varia.

Esempio
PerSourceMaxStartups 10
PerSourceNetBlockSize

Imposta le lunghezze dei prefissi IPv4 e IPv6 utilizzati per raggruppare le origini per i limiti di connessione per origine.

Esempio
PerSourceNetBlockSize 32:128
PerSourcePenalties

Configurare sanzioni per fonti problematiche. I tipi di penalità, i valori e i valori predefiniti supportati variano in base alla versione di OpenSSH.

Esempio
PerSourcePenalties no
PerSourcePenaltyExemptList

Elenca gli indirizzi di origine o gli intervalli CIDR esenti da penalità per origine; garantire che le esenzioni abbiano una portata ristretta.

Esempio
PerSourcePenaltyExemptList 192.0.2.0/24
PidFile

Percorso del file dell'ID del processo del server. Assicurarsi che il gestore del servizio e le autorizzazioni siano d'accordo con questo percorso.

Esempio
PidFile /run/sshd.pid
PrintLastLog

Controllare la stampa dell'ora di accesso precedente per gli accessi interattivi. La disponibilità può dipendere dal supporto della piattaforma.

Esempio
PrintLastLog yes
PubkeyAuthOptions

Imposta le opzioni di autenticazione con chiave pubblica, incluso il tocco della chiave di sicurezza o i requisiti di verifica, se supportati.

Esempio
PubkeyAuthOptions touch-required
RefuseConnection

Rifiuta una connessione, in genere all'interno di un blocco Match. La disponibilità varia in base alla versione.

Esempio
Match User blocked
    RefuseConnection yes
RequiredRSASize

Imposta la dimensione minima della chiave RSA accettata da sshd. Valori più bassi possono indebolire la sicurezza e alcune versioni impongono un minimo.

Esempio
RequiredRSASize 3072
RDomain

Seleziona un dominio di instradamento per la sessione su piattaforme che supportano i domini di instradamento. Questo è specifico della piattaforma.

Esempio
RDomain 1
SecurityKeyProvider

Percorso di una libreria middleware per chiavi di sicurezza FIDO; lasciandolo non impostato utilizza il supporto integrato ove disponibile.

Esempio
SecurityKeyProvider /usr/local/lib/libsk-libfido2.so
SshdAuthPath

Percorso dell'assistente per l'autenticazione sshd sulle versioni e sulle piattaforme che lo supportano. Normalmente gestito dal pacchetto.

Esempio
SshdAuthPath /usr/libexec/sshd-auth
SshdSessionPath

Percorso dell'helper della sessione sshd sulle versioni e piattaforme che lo supportano. Normalmente gestito dal pacchetto.

Esempio
SshdSessionPath /usr/libexec/sshd-session
StreamLocalBindMask

Imposta la maschera di creazione della modalità file ottale per un socket di inoltro del dominio Unix.

Esempio
StreamLocalBindMask 0177
StreamLocalBindUnlink

Controlla se un socket di dominio Unix esistente viene rimosso prima di creare un ascoltatore di inoltro.

Esempio
StreamLocalBindUnlink no
UnusedConnectionTimeout

Chiudi le connessioni senza canali aperti dopo il tempo specificato. Il comportamento interessato e la disponibilità variano in base alla versione.

Esempio
UnusedConnectionTimeout 5m
X11DisplayOffset

Imposta il primo numero di visualizzazione disponibile per l'inoltro X11.

Esempio
X11DisplayOffset 10
X11UseLocalhost

Associa il server di inoltro X11 al loopback quando abilitato; disabilitandolo è possibile esporre il display in modo più ampio.

Esempio
X11UseLocalhost yes
XAuthLocation

Percorso del programma xauth utilizzato per l'inoltro X11, ove applicabile.

Esempio
XAuthLocation /usr/bin/xauth
IPQoS

Imposta i contrassegni di qualità del servizio IP per sessioni interattive e non interattive. I dispositivi di rete possono interpretare o ignorare questi contrassegni.

Esempio
IPQoS lowdelay throughput
MACs

Seleziona gli algoritmi del codice di autenticazione del messaggio. La modifica delle impostazioni predefinite può influire sulla sicurezza e sulla compatibilità del client.

Esempio
MACs hmac-sha2-256-etm@openssh.com
SetEnv

Imposta le variabili di ambiente per le sessioni secondarie. Questi valori sovrascrivono le variabili accettate dai client o dai file dell'ambiente utente.

Esempio
SetEnv LANG=en_US.UTF-8
UseDNS

Controlla la ricerca DNS inversa e la verifica per la connessione dei client. Abilitarlo potrebbe aggiungere ritardo se il DNS è lento.

Esempio
UseDNS no

Configurazione iniziale consigliata

Per server con accesso tramite chiave pubblica verificato e senza necessità di autenticazione interattiva da tastiera. L’inoltro TCP resta consentito agli utenti autenticati; le porte remote sono in ascolto solo sull’interfaccia di loopback.

PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no
PermitEmptyPasswords no
AllowTcpForwarding yes
GatewayPorts no

Disabilita l’accesso con password e l’autenticazione interattiva da tastiera, che può includere PAM o codici monouso. Verifica prima un altro account amministratore e la relativa chiave. AllowTcpForwarding yes consente l’inoltro agli utenti autenticati: limita gli accessi secondo necessità.

Mantieni aperta la sessione attuale e disponibile un metodo di recupero. Integra i valori nella configurazione esistente: l’ordine di Include, i valori precedenti e i blocchi Match possono influire sul risultato. Controlla con sshd -t e sshd -T e usa sshd -T -C per le condizioni Match. Applica le modifiche tramite il servizio di sistema e verifica un secondo accesso prima di chiudere il primo.

Riferimenti ufficiali

Verificato il 27 ottobre 2026