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 yesConvalida la sintassi e controlla le impostazioni effettive del server prima di applicare le modifiche.
sudo sshd -t
sudo sshd -TOpzioni ed esempi
PortComunePorta TCP in ascolto; sono consentite più direttive Port. Assicurarsi che il firewall e i client consentano la porta scelta.
Port 2222ListenAddressComuneIndirizzo locale su cui sshd è in ascolto. Un indirizzo può includere una porta; assicurarsi che esista sul server.
ListenAddress 192.0.2.10AddressFamilySeleziona la famiglia di indirizzi: qualsiasi, inet per IPv4 o inet6 per IPv6.
AddressFamily inetHostKeyComunePercorso della chiave host privata del server; questa non è la chiave di autenticazione dell'utente. Proteggi il file privato.
HostKey /etc/ssh/ssh_host_ed25519_keyHostCertificatePercorso di un certificato host del server che corrisponde a una chiave host configurata.
HostCertificate /etc/ssh/ssh_host_ed25519_key-cert.pubPasswordAuthenticationComuneConsenti o nega l'autenticazione della password. Verifica un altro metodo di accesso prima di disabilitarlo.
PasswordAuthentication noPubkeyAuthenticationComuneConsenti o nega l'autenticazione con chiave pubblica. Le autorizzazioni del server e le chiavi autorizzate continuano a essere valide.
PubkeyAuthentication yesKbdInteractiveAuthenticationComuneConsenti l'autenticazione interattiva da tastiera. Le richieste e i metodi disponibili dipendono dal server e dal backend di autenticazione.
KbdInteractiveAuthentication yesAuthenticationMethodsComuneRichiedere 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.
AuthenticationMethods publickey,keyboard-interactivePermitRootLoginComuneControlla l'accesso root: sì, proibisci la password, solo comandi forzati o no. Testare prima un accesso amministrativo alternativo.
PermitRootLogin noPermitEmptyPasswordsConsenti agli account con password vuote di autenticarsi utilizzando l'autenticazione tramite password. Abilitarlo non è sicuro.
PermitEmptyPasswords noAuthorizedKeysFileComunePercorsi di file contenenti chiavi pubbliche autorizzate. I percorsi relativi vengono risolti dalla directory home dell'utente; i token sono supportati.
AuthorizedKeysFile .ssh/authorized_keysStrictModesComuneControlla la proprietà e le autorizzazioni dei file utente e delle directory home prima di accettare l'accesso.
StrictModes yesAllowUsersComuneConsenti solo i modelli di nome utente elencati; I modelli USER@HOST possono vincolare l'origine. L'accesso all'account è soggetto anche ad altre restrizioni.
AllowUsers alice bobDenyUsersNega modelli di nomi utente corrispondenti. Le regole Nega hanno la precedenza sulle regole Consenti corrispondenti.
DenyUsers guestAllowGroupsConsenti solo gli utenti nei gruppi denominati corrispondenti, soggetti ad altre regole di accesso.
AllowGroups sshusersDenyGroupsNega agli utenti la corrispondenza nei gruppi denominati; vengono utilizzati i nomi dei gruppi e non gli ID numerici.
DenyGroups restrictedAllowTcpForwardingComuneControlla 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.
AllowTcpForwarding localDisableForwardingDisabilita le funzionalità di inoltro, ignorando altre impostazioni di inoltro. Ciò può interrompere i tunnel e l'agente o l'inoltro X11.
DisableForwarding yesGatewayPortsComuneControlla 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.
GatewayPorts noPermitOpenLimitare le destinazioni per l'inoltro TCP locale; utilizzare le voci host:porta, qualsiasi o nessuna. I nomi non vengono risolti per la corrispondenza.
PermitOpen db.example.com:5432PermitListenLimitare gli indirizzi e le porte di ascolto per l'inoltro remoto; GatewayPorts influisce anche sull'associazione.
PermitListen localhost:18080AllowAgentForwardingConsenti l'inoltro dell'agente di autenticazione SSH. Un processo remoto con accesso al socket dell'agente può richiedere firme.
AllowAgentForwarding noAllowStreamLocalForwardingControlla l'inoltro del socket del dominio Unix: sì o tutti, no, locale o remoto.
AllowStreamLocalForwarding noX11ForwardingAbilita l'inoltro del display X11. Abilita solo dove necessario e comprendi il rischio di accesso remoto al display.
X11Forwarding noMaxAuthTriesComuneNumero massimo di tentativi di autenticazione per connessione prima della disconnessione. Il server potrebbe registrare gli errori in precedenza.
MaxAuthTries 4MaxSessionsComuneNumero massimo di sessioni di shell, accesso o sottosistema per connessione SSH. L'impostazione su zero impedisce le sessioni ma può comunque consentire l'inoltro.
MaxSessions 10MaxStartupsComuneLimita le connessioni non autenticate. Il modulo start:rate:full rifiuta progressivamente le connessioni sotto carico.
MaxStartups 10:30:100LoginGraceTimeComuneTempo concesso per l'autenticazione; una durata pari a zero significa nessun limite di tempo.
LoginGraceTime 60sClientAliveIntervalComuneIntervallo in secondi per le sonde client-alive crittografate a livello SSH; zero disabilita queste sonde.
ClientAliveInterval 30ClientAliveCountMaxComuneNumero di sondaggi client-vivo a livello SSH senza risposta tollerati prima della disconnessione. Utilizzare con ClientAliveInterval.
ClientAliveCountMax 3TCPKeepAliveControlla i messaggi keepalive TCP. Questi sono separati dalle sonde client-alive SSH crittografate.
TCPKeepAlive yesUsePAMComuneAbilita l'integrazione PAM sulle build che la supportano. La politica PAM e i metodi di autenticazione disponibili variano in base al sistema.
UsePAM yesPermitTTYConsenti l'allocazione di uno pseudo-terminale. La sua disabilitazione influisce sulle sessioni interattive.
PermitTTY yesForceCommandSostituisci il comando richiesto con un comando fisso. Convalidare attentamente l'accesso e le restrizioni prima di abilitarli.
ForceCommand internal-sftpSubsystemComuneDefinire un sottosistema denominato e il relativo comando; internal-sftp è il server SFTP integrato.
Subsystem sftp internal-sftpChrootDirectoryLimitare 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.
ChrootDirectory /srv/sftp/%uMatchComuneAvvia un blocco condizionale per la corrispondenza di utenti, gruppi, indirizzi o altri criteri supportati. Al suo interno sono ammesse solo alcune direttive.
Match User sftpuser
ForceCommand internal-sftpIncludeComuneIncludi file di configurazione per percorso o glob. L'ordine è importante perché generalmente si applica il primo valore ottenuto.
Include /etc/ssh/sshd_config.d/*.confLogLevelComuneImposta il livello di dettaglio della registrazione, ad esempio QUIET, FATAL, ERROR, INFO, VERBOSE o DEBUG. I registri dettagliati potrebbero esporre informazioni riservate.
LogLevel INFOSyslogFacilityScegli la struttura syslog utilizzata per i messaggi del server SSH; la configurazione della registrazione del sistema determina dove appaiono.
SyslogFacility AUTHBannerInvia il contenuto di un file specificato prima dell'autenticazione. Non utilizzare nessuno per disabilitare un banner configurato.
Banner /etc/issue.netAcceptEnvConsenti variabili di ambiente denominate fornite dal client. Alcune variabili possono ignorare gli ambienti limitati, quindi consenti solo ciò che è necessario.
AcceptEnv LANG LC_*PermitUserEnvironmentControlla le impostazioni dell'ambiente fornite dall'utente. Abilitandoli è possibile aggirare le restrizioni attraverso le variabili di ambiente.
PermitUserEnvironment noPrintMotdControlla se sshd stampa il messaggio del giorno all'accesso interattivo. Anche PAM o un altro servizio potrebbero stamparlo.
PrintMotd noCompressionControllare la compressione. I valori e i tempi supportati variano in base alla versione di OpenSSH.
Compression noRekeyLimitImposta la soglia dei dati e facoltativamente l'intervallo di tempo per la ricodifica. Utilizzare valori appropriati per la versione del server.
RekeyLimit 1G 1hCiphersSeleziona 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.
Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.comKexAlgorithmsSeleziona gli algoritmi di scambio delle chiavi. Limitare questo elenco può interrompere i client; verificare il supporto su entrambi i lati.
KexAlgorithms curve25519-sha256PubkeyAcceptedAlgorithmsSelezionare gli algoritmi di firma a chiave pubblica consentiti per l'autenticazione dell'utente. Verificare la compatibilità prima di modificare l'elenco predefinito.
PubkeyAcceptedAlgorithms ssh-ed25519HostKeyAlgorithmsSeleziona gli algoritmi di firma della chiave host offerti dal server. La chiave host configurata deve supportare l'algoritmo scelto.
HostKeyAlgorithms ssh-ed25519TrustedUserCAKeysFile contenente le chiavi pubbliche dell'autorità di certificazione dell'utente attendibile per l'autenticazione del certificato.
TrustedUserCAKeys /etc/ssh/user_ca.pubRevokedKeysFile contenente chiavi pubbliche revocate o un elenco di revoche di chiavi. Un file configurato mancante o illeggibile può impedire l'autenticazione con chiave pubblica.
RevokedKeys /etc/ssh/revoked_keysAuthorizedPrincipalsFileEntità di elenco dei file consentite per un certificato utente firmato da una CA attendibile; l'espansione dei token è supportata.
AuthorizedPrincipalsFile /etc/ssh/auth_principals/%uVersionAddendumAggiungi testo al banner del protocollo SSH; nessuno disabilita il testo aggiunto.
VersionAddendum noneAuthorizedKeysCommandEsegui 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.
AuthorizedKeysCommand /usr/local/libexec/ssh-keys %uAuthorizedKeysCommandUserAccount utilizzato per eseguire AuthorizedKeysCommand; si consiglia un account dedicato.
AuthorizedKeysCommandUser sshkeysAuthorizedPrincipalsCommandEseguire un programma attendibile per ottenere le entità certificato consentite. Configura il suo account di esecuzione separatamente.
AuthorizedPrincipalsCommand /usr/local/libexec/ssh-principals %uAuthorizedPrincipalsCommandUserAccount utilizzato per eseguire AuthorizedPrincipalsCommand; utilizzare un account dedicato.
AuthorizedPrincipalsCommandUser sshprincipalsCASignatureAlgorithmsLimita gli algoritmi di firma dell'autorità di certificazione accettati per i certificati SSH. Verificare la compatibilità tra CA e client prima delle modifiche.
CASignatureAlgorithms ssh-ed25519ChannelTimeoutScadenza 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.
ChannelTimeout session=1hExposeAuthInfoEsporre le informazioni di autenticazione tramite un file temporaneo a cui fa riferimento SSH_USER_AUTH; prendere in considerazione l'accesso ai dettagli di autenticazione.
ExposeAuthInfo noFingerprintHashSeleziona l'hash utilizzato per le impronte digitali delle chiavi, come sha256 o md5. Preferisco SHA-256.
FingerprintHash sha256GSSAPIAuthenticationControlla l'autenticazione utente GSSAPI quando supportata dalla build del server.
GSSAPIAuthentication noGSSAPICleanupCredentialsControlla se le credenziali GSSAPI delegate vengono distrutte al momento del logout; il supporto per la creazione varia.
GSSAPICleanupCredentials yesGSSAPIDelegateCredentialsControlla la memorizzazione delle credenziali GSSAPI delegate per le sessioni utente, quando supportate.
GSSAPIDelegateCredentials noGSSAPIStrictAcceptorCheckControlla se il server richiede l'identità host GSSAPI corretta. La disabilitazione della verifica ha implicazioni sulla sicurezza.
GSSAPIStrictAcceptorCheck yesHostbasedAcceptedAlgorithmsSeleziona gli algoritmi accettati per l'autenticazione basata su host. La disponibilità varia in base alla versione di OpenSSH.
HostbasedAcceptedAlgorithms ssh-ed25519HostbasedAuthenticationControllare l'autenticazione basata su host; richiede ulteriore fiducia e configurazione dell'host.
HostbasedAuthentication noHostbasedUsesNameFromPacketOnlyControlla se l'autenticazione basata su host utilizza il nome fornito dal client anziché il DNS. Esaminare le implicazioni sulla fiducia.
HostbasedUsesNameFromPacketOnly noHostKeyAgentSpecificare il socket dell'agente utilizzato per accedere alle chiavi private dell'host. L'agente e il relativo socket devono essere disponibili su sshd.
HostKeyAgent /run/ssh-hostkey-agent.sockIgnoreRhostsControllare l'uso dei file rhost o shost per utente per l'autenticazione basata su host; i valori accettati variano in base alla versione.
IgnoreRhosts yesIgnoreUserKnownHostsControlla se i fileknown_hosts specifici dell'utente vengono ignorati durante l'autenticazione basata sull'host.
IgnoreUserKnownHosts yesKerberosAuthenticationControlla l'autenticazione della password Kerberos quando creata e configurata con il supporto Kerberos.
KerberosAuthentication noKerberosGetAFSTokenControlla l'ottenimento di un token AFS per un utente autenticato Kerberos laddove la build lo supporta.
KerberosGetAFSToken noKerberosOrLocalPasswdControlla se la convalida della password Kerberos non riuscita ricorre all'autenticazione della password locale.
KerberosOrLocalPasswd noKerberosTicketCleanupControlla la rimozione della cache dei ticket Kerberos di un utente al momento della disconnessione, ove supportato.
KerberosTicketCleanup yesLogVerboseSostituisci la verbosità della registrazione per la corrispondenza delle posizioni di origine. È destinato alla risoluzione dei problemi e potrebbe esporre informazioni sensibili.
LogVerbose kex.c:*:1000ModuliFilePercorso del file dei moduli utilizzato per lo scambio del gruppo Diffie-Hellman; mantenerlo secondo le indicazioni della piattaforma.
ModuliFile /etc/ssh/moduliPAMServiceNameSeleziona il nome del servizio PAM sulle build che supportano questa direttiva; La policy PAM per il servizio selezionato deve esistere.
PAMServiceName sshdPermitTunnelControlla l'inoltro del dispositivo: sì, punto a punto, Ethernet o no. Potrebbero essere necessari privilegi di sistema e configurazioni aggiuntivi.
PermitTunnel noPermitUserRCControlla l'esecuzione del file rc SSH dell'utente. La sua disabilitazione può influire sulla configurazione della sessione utente.
PermitUserRC noPerSourceMaxStartupsLimitare le connessioni simultanee non autenticate per indirizzo di origine o gruppo di origine; il supporto della versione varia.
PerSourceMaxStartups 10PerSourceNetBlockSizeImposta le lunghezze dei prefissi IPv4 e IPv6 utilizzati per raggruppare le origini per i limiti di connessione per origine.
PerSourceNetBlockSize 32:128PerSourcePenaltiesConfigurare sanzioni per fonti problematiche. I tipi di penalità, i valori e i valori predefiniti supportati variano in base alla versione di OpenSSH.
PerSourcePenalties noPerSourcePenaltyExemptListElenca gli indirizzi di origine o gli intervalli CIDR esenti da penalità per origine; garantire che le esenzioni abbiano una portata ristretta.
PerSourcePenaltyExemptList 192.0.2.0/24PidFilePercorso del file dell'ID del processo del server. Assicurarsi che il gestore del servizio e le autorizzazioni siano d'accordo con questo percorso.
PidFile /run/sshd.pidPrintLastLogControllare la stampa dell'ora di accesso precedente per gli accessi interattivi. La disponibilità può dipendere dal supporto della piattaforma.
PrintLastLog yesPubkeyAuthOptionsImposta le opzioni di autenticazione con chiave pubblica, incluso il tocco della chiave di sicurezza o i requisiti di verifica, se supportati.
PubkeyAuthOptions touch-requiredRefuseConnectionRifiuta una connessione, in genere all'interno di un blocco Match. La disponibilità varia in base alla versione.
Match User blocked
RefuseConnection yesRequiredRSASizeImposta la dimensione minima della chiave RSA accettata da sshd. Valori più bassi possono indebolire la sicurezza e alcune versioni impongono un minimo.
RequiredRSASize 3072RDomainSeleziona un dominio di instradamento per la sessione su piattaforme che supportano i domini di instradamento. Questo è specifico della piattaforma.
RDomain 1SecurityKeyProviderPercorso di una libreria middleware per chiavi di sicurezza FIDO; lasciandolo non impostato utilizza il supporto integrato ove disponibile.
SecurityKeyProvider /usr/local/lib/libsk-libfido2.soSshdAuthPathPercorso dell'assistente per l'autenticazione sshd sulle versioni e sulle piattaforme che lo supportano. Normalmente gestito dal pacchetto.
SshdAuthPath /usr/libexec/sshd-authSshdSessionPathPercorso dell'helper della sessione sshd sulle versioni e piattaforme che lo supportano. Normalmente gestito dal pacchetto.
SshdSessionPath /usr/libexec/sshd-sessionStreamLocalBindMaskImposta la maschera di creazione della modalità file ottale per un socket di inoltro del dominio Unix.
StreamLocalBindMask 0177StreamLocalBindUnlinkControlla se un socket di dominio Unix esistente viene rimosso prima di creare un ascoltatore di inoltro.
StreamLocalBindUnlink noUnusedConnectionTimeoutChiudi le connessioni senza canali aperti dopo il tempo specificato. Il comportamento interessato e la disponibilità variano in base alla versione.
UnusedConnectionTimeout 5mX11DisplayOffsetImposta il primo numero di visualizzazione disponibile per l'inoltro X11.
X11DisplayOffset 10X11UseLocalhostAssocia il server di inoltro X11 al loopback quando abilitato; disabilitandolo è possibile esporre il display in modo più ampio.
X11UseLocalhost yesXAuthLocationPercorso del programma xauth utilizzato per l'inoltro X11, ove applicabile.
XAuthLocation /usr/bin/xauthIPQoSImposta i contrassegni di qualità del servizio IP per sessioni interattive e non interattive. I dispositivi di rete possono interpretare o ignorare questi contrassegni.
IPQoS lowdelay throughputMACsSeleziona gli algoritmi del codice di autenticazione del messaggio. La modifica delle impostazioni predefinite può influire sulla sicurezza e sulla compatibilità del client.
MACs hmac-sha2-256-etm@openssh.comSetEnvImposta le variabili di ambiente per le sessioni secondarie. Questi valori sovrascrivono le variabili accettate dai client o dai file dell'ambiente utente.
SetEnv LANG=en_US.UTF-8UseDNSControlla la ricerca DNS inversa e la verifica per la connessione dei client. Abilitarlo potrebbe aggiungere ritardo se il DNS è lento.
UseDNS noConfigurazione 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 noDisabilita 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