sshd_config

設定 OpenSSH 伺服器:監聽、驗證、轉送、存取控制和日誌記錄。

執行前須知

伺服器配置與客戶端 ssh_config 不同。路徑、支援的選項和預設值取決於作業系統和 OpenSSH 版本。保持現有的管理會話處於開啟狀態且恢復路徑可用。在套用變更之前,使用 sshd -t 驗證實際設定並使用 sshd -T 檢查有效設定;這些指令可能需要管理員權限。在關閉原始會話之前驗證第二次登入。不要盲目複製範例值。

變更生效後,請先透過新的 SSH 工作階段確認能正常登入,並驗證預期功能。確認成功之前,請保持目前工作階段開啟,以便必要時還原設定。

使用範例

伺服器配置範例。根據您的環境調整身份驗證、路徑和存取規則。

Port 22
PermitRootLogin no
PubkeyAuthentication yes
AllowTcpForwarding yes

在應用變更之前驗證語法並檢查有效的伺服器設定。

sudo sshd -t
sudo sshd -T

參數與範例

Port常用

監聽TCP埠;允許多個埠指令。確保防火牆和用戶端允許所選連接埠。

範例
Port 2222
ListenAddress常用

sshd 監聽的本機位址。位址可以包含連接埠;確保它存在於伺服器上。

範例
ListenAddress 192.0.2.10
AddressFamily

選擇位址系列:any、inet(適用於 IPv4)或 inet6(適用於 IPv6)。

範例
AddressFamily inet
HostKey常用

伺服器私有主機金鑰的路徑;這不是使用者的身份驗證金鑰。保護私人文件。

範例
HostKey /etc/ssh/ssh_host_ed25519_key
HostCertificate

與配置的主機金鑰相符的伺服器主機憑證的路徑。

範例
HostCertificate /etc/ssh/ssh_host_ed25519_key-cert.pub
PasswordAuthentication常用

允許或停用密碼驗證。停用密碼驗證前,請先確認其他登入方式可用。

範例
PasswordAuthentication no
PubkeyAuthentication常用

允許或拒絕公鑰身份驗證。伺服器權限和授權金鑰仍然適用。

範例
PubkeyAuthentication yes
KbdInteractiveAuthentication常用

允许键盘交互式身份验证。提示和可用方法取決於伺服器和身份驗證後端。

範例
KbdInteractiveAuthentication yes
AuthenticationMethods常用

需要空格分隔的方法清單之一;清單中的每個以逗號分隔的方法都必須成功。也必須啟用每種方法。

範例
AuthenticationMethods publickey,keyboard-interactive
PermitRootLogin常用

控制 root 登入:yes、prohibit-password、forced-commands-only 或 no。修改前請先測試其他管理員登入方式。

範例
PermitRootLogin no
PermitEmptyPasswords

允許具有空密碼的帳戶使用密碼身份驗證進行身份驗證。啟用此功能是不安全的。

範例
PermitEmptyPasswords no
AuthorizedKeysFile常用

包含授權公鑰的檔案的路徑。相對路徑是從使用者的主目錄解析的;支援令牌。

範例
AuthorizedKeysFile .ssh/authorized_keys
StrictModes常用

在接受登入之前檢查使用者檔案和主目錄的所有權和權限。

範例
StrictModes yes
AllowUsers常用

僅允許列出的使用者名稱模式; USER@HOST 模式可以限制來源。帳戶存取還受到其他限制。

範例
AllowUsers alice bob
DenyUsers

拒絕匹配的用戶名模式。拒絕規則優先於相應的允許規則。

範例
DenyUsers guest
AllowGroups

僅允許匹配命名組中的用戶,並遵守其他訪問規則。

範例
AllowGroups sshusers
DenyGroups

拒絕配對命名群組中的使用者;使用群組名稱,而不是數字 ID。

範例
DenyGroups restricted
AllowTcpForwarding常用

控制 TCP 轉送:是或全部、否、本機或遠端。僅此一點無法阻止具有不受限制的 shell 存取權限的使用者進行轉送。

範例
AllowTcpForwarding local
DisableForwarding

停用轉送功能,覆蓋其他轉送設定。這可能會破壞隧道和代理或 X11 轉發。

範例
DisableForwarding yes
GatewayPorts常用

控制遠端轉送綁定位址:no 綁定環回,yes 綁定通配符,clientspecified 允許客戶端選擇的位址。暴露端口會帶來安全隱患。

範例
GatewayPorts no
PermitOpen

限製本機 TCP 轉送的目的地;使用主機:連接埠條目,任何或無。未解析名稱以進行比對。

範例
PermitOpen db.example.com:5432
PermitListen

限制遠端轉送的監聽位址和連接埠; GatewayPorts 也會影響綁定。

範例
PermitListen localhost:18080
AllowAgentForwarding

允許 SSH 身份驗證代理轉發。有權存取代理套接字的遠端進程可以請求簽章。

範例
AllowAgentForwarding no
AllowStreamLocalForwarding

控制 Unix 網域套接字轉送:是或全部、否、本機或遠端。

範例
AllowStreamLocalForwarding no
X11Forwarding

啟用 X11 顯示轉送。僅在需要時啟用並了解遠端顯示存取風險。

範例
X11Forwarding no
MaxAuthTries常用

中斷連線之前每個連線的最大身份驗證嘗試次數。伺服器可能會更早記錄故障。

範例
MaxAuthTries 4
MaxSessions常用

每個 SSH 連線的最大 shell、登入或子系統會話數。設定為零會阻止會話,但仍可能允許轉送。

範例
MaxSessions 10
MaxStartups常用

限制未經身份驗證的連線。 start:rate:full 形式逐漸拒絕負載下的連線。

範例
MaxStartups 10:30:100
LoginGraceTime常用

允許認證的時間;持續時間為零意味著沒有時間限制。

範例
LoginGraceTime 60s
ClientAliveInterval常用

加密 SSH 等級用戶端活動偵測的時間間隔(以秒為單位);零停用這些偵測器。

範例
ClientAliveInterval 30
ClientAliveCountMax常用

斷開連線之前容忍的未應答的 SSH 級客戶端活動探測的數量。與 ClientAliveInterval 一起使用。

範例
ClientAliveCountMax 3
TCPKeepAlive

控制 TCP keepalive 訊息。這些與加密的 SSH 用戶端活動探測是分開的。

範例
TCPKeepAlive yes
UsePAM常用

在支援 PAM 的建置上啟用 PAM 整合。 PAM 策略和可用的身份驗證方法因係統而異。

範例
UsePAM yes
PermitTTY

允許分配偽終端。禁用它會影響互動式會話。

範例
PermitTTY yes
ForceCommand

將請求的命令替換為固定命令。啟用之前請仔細驗證訪問和限制。

範例
ForceCommand internal-sftp
Subsystem常用

定義一個命名子系統及其指令; Internal-sftp 是內建 SFTP 伺服器。

範例
Subsystem sftp internal-sftp
ChrootDirectory

身份驗證後將會話限製到目錄。嚴格檢查目錄所有權和權限;為預期會話提供所需的檔案。

範例
ChrootDirectory /srv/sftp/%u
Match常用

啟動條件區塊來符合使用者、群組、位址或其他支援的條件。其中只允許使用某些指令。

範例
Match User sftpuser
    ForceCommand internal-sftp
Include常用

按路徑或 glob 包含設定檔。排序很重要,因為通常會應用第一個獲得的值。

範例
Include /etc/ssh/sshd_config.d/*.conf
LogLevel常用

設定日誌記錄詳細程度,例如 QUIET、FATAL、ERROR、INFO、VERBOSE 或 DEBUG。詳細的日誌可能會暴露敏感資訊。

範例
LogLevel INFO
SyslogFacility

選擇用於 SSH 伺服器訊息的系統日誌工具;系統日誌記錄配置決定它們出現的位置。

範例
SyslogFacility AUTH
Banner

在身份驗證之前發送指定文件的內容。使用 none 停用已配置的橫幅。

範例
Banner /etc/issue.net
AcceptEnv

允許命名客戶端提供的環境變數。有些變數可以繞過受限環境,因此僅允許需要的變數。

範例
AcceptEnv LANG LC_*
PermitUserEnvironment

控制使用者提供的環境設定。啟用它們可以透過環境變數繞過限制。

範例
PermitUserEnvironment no
PrintMotd

控制 sshd 是否在互動式登入時列印當天的訊息。 PAM 或其他服務也可以列印它。

範例
PrintMotd no
Compression

控制壓縮。支援的值和時間因 OpenSSH 版本而異。

範例
Compression no
RekeyLimit

設定資料閾值和(可選)重新產生金鑰的時間間隔。使用適合伺服器版本的值。

範例
RekeyLimit 1G 1h
Ciphers

選擇允許的加密演算法。替換預設清單可能會降低相容性;使用 ssh -Q cipher 檢查客戶端支援的演算法。

範例
Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.com
KexAlgorithms

選擇密鑰交換演算法。限制此清單可能會破壞客戶端;驗證雙方的支援。

範例
KexAlgorithms curve25519-sha256
PubkeyAcceptedAlgorithms

選擇允許的公鑰簽章演算法進行使用者身份驗證。在更改預設清單之前驗證相容性。

範例
PubkeyAcceptedAlgorithms ssh-ed25519
HostKeyAlgorithms

選擇伺服器提供的主機金鑰簽章演算法。配置的主機金鑰必須支援所選的演算法。

範例
HostKeyAlgorithms ssh-ed25519
TrustedUserCAKeys

包含用於憑證驗證的受信任使用者憑證授權單位公鑰的檔案。

範例
TrustedUserCAKeys /etc/ssh/user_ca.pub
RevokedKeys

包含已撤銷的公鑰或金鑰撤銷清單的檔案。遺失或不可讀的設定檔可能會阻止公鑰身份驗證。

範例
RevokedKeys /etc/ssh/revoked_keys
AuthorizedPrincipalsFile

文件列出由可信任 CA 簽署的用戶證書允許的主體;支援代幣擴充。

範例
AuthorizedPrincipalsFile /etc/ssh/auth_principals/%u
VersionAddendum

將文字附加到 SSH 協定橫幅; none 停用新增的文字。

範例
VersionAddendum none
AuthorizedKeysCommand

執行受信任的、root 擁有的程式來取得公鑰。配置其執行帳戶並遵循手冊的所有權要求。

範例
AuthorizedKeysCommand /usr/local/libexec/ssh-keys %u
AuthorizedKeysCommandUser

用於執行 AuthorizedKeysCommand 的帳戶;建議使用專用帳戶。

範例
AuthorizedKeysCommandUser sshkeys
AuthorizedPrincipalsCommand

運行受信任的程式來取得允許的憑證主體。單獨配置其執行帳戶。

範例
AuthorizedPrincipalsCommand /usr/local/libexec/ssh-principals %u
AuthorizedPrincipalsCommandUser

用於執行 AuthorizedPrincipalsCommand 的帳戶;使用專用帳戶。

範例
AuthorizedPrincipalsCommandUser sshprincipals
CASignatureAlgorithms

限制 SSH 憑證接受的憑證授權單位簽署演算法。在更改之前驗證 CA 和客戶端相容性。

範例
CASignatureAlgorithms ssh-ed25519
ChannelTimeout

按通道類型和持續時間使非活動通道過期;可用性和支援的通道類型取決於版本。到期不需要終止 SSH 連線。

範例
ChannelTimeout session=1h
ExposeAuthInfo

透過 SSH_USER_AUTH 引用的臨時檔案暴露身份驗證資訊;考慮存取身份驗證詳細資訊。

範例
ExposeAuthInfo no
FingerprintHash

選擇用於密鑰指紋的哈希,例如 sha256 或 md5。首選 SHA-256。

範例
FingerprintHash sha256
GSSAPIAuthentication

當伺服器版本支援時控制 GSSAPI 使用者身份驗證。

範例
GSSAPIAuthentication no
GSSAPICleanupCredentials

控制委派的 GSSAPI 憑證是否在註銷時被銷毀;建構支援各不相同。

範例
GSSAPICleanupCredentials yes
GSSAPIDelegateCredentials

控制儲存使用者會話的委派 GSSAPI 憑證(如果支援)。

範例
GSSAPIDelegateCredentials no
GSSAPIStrictAcceptorCheck

控制伺服器是否需要正確的 GSSAPI 主機識別。停用驗證會產生安全隱患。

範例
GSSAPIStrictAcceptorCheck yes
HostbasedAcceptedAlgorithms

選擇基於主機的身份驗證所接受的演算法。可用性因 OpenSSH 版本而異。

範例
HostbasedAcceptedAlgorithms ssh-ed25519
HostbasedAuthentication

控制基於主機的身份驗證;它需要額外的信任和主機配置。

範例
HostbasedAuthentication no
HostbasedUsesNameFromPacketOnly

控制基於主機的身份驗證是否使用客戶端提供的名稱而不是 DNS。審查信任影響。

範例
HostbasedUsesNameFromPacketOnly no
HostKeyAgent

指定用於存取主機私鑰的代理套接字。代理程式及其套接字必須可供 sshd 使用。

範例
HostKeyAgent /run/ssh-hostkey-agent.sock
IgnoreRhosts

控制每用戶 rhosts 或 shosts 檔案的使用以進行基於主機的身份驗證;接受的值因版本而異。

範例
IgnoreRhosts yes
IgnoreUserKnownHosts

控制在基於主機的身份驗證期間是否忽略使用者特定的known_hosts 檔案。

範例
IgnoreUserKnownHosts yes
KerberosAuthentication

在建置和設定 Kerberos 支援時控制 Kerberos 密碼驗證。

範例
KerberosAuthentication no
KerberosGetAFSToken

在建置支援的情況下,控制為經過 Kerberos 驗證的使用者取得 AFS 令牌。

範例
KerberosGetAFSToken no
KerberosOrLocalPasswd

控制失敗的 Kerberos 密碼驗證是否回退到本機密碼驗證。

範例
KerberosOrLocalPasswd no
KerberosTicketCleanup

在支援的情況下,控制在登出時刪除使用者的 Kerberos 票證快取。

範例
KerberosTicketCleanup yes
LogVerbose

覆蓋匹配來源位置的日誌記錄詳細程度。它旨在用於故障排除,並可能暴露敏感資訊。

範例
LogVerbose kex.c:*:1000
ModuliFile

用於 Diffie-Hellman 群組交換的模組檔案的路徑;根據平台指導進行維護。

範例
ModuliFile /etc/ssh/moduli
PAMServiceName

在支援此指令的版本上選擇 PAM 服務名稱;所選服務的 PAM 策略必須存在。

範例
PAMServiceName sshd
PermitTunnel

控制 tun 設備轉送:是、點對點、乙太網路或否。可能需要額外的系統權限和配置。

範例
PermitTunnel no
PermitUserRC

控制使用者的 SSH rc 檔案的執行。禁用它可能會影響用戶會話設定。

範例
PermitUserRC no
PerSourceMaxStartups

限制每個來源位址或來源群組的同時未經身份驗證的連線;版本支援有所不同。

範例
PerSourceMaxStartups 10
PerSourceNetBlockSize

設定用於對每個來源連線限制的來源進行分組的 IPv4 和 IPv6 前綴長度。

範例
PerSourceNetBlockSize 32:128
PerSourcePenalties

配置對有問題的來源的懲罰。支援的懲罰類型、值和預設值因 OpenSSH 版本而異。

範例
PerSourcePenalties no
PerSourcePenaltyExemptList

列出免受每個來源處罰的來源位址或 CIDR 範圍;確保豁免範圍狹窄。

範例
PerSourcePenaltyExemptList 192.0.2.0/24
PidFile

伺服器進程 ID 檔案的路徑。確保服務管理員和權限同意此路徑。

範例
PidFile /run/sshd.pid
PrintLastLog

控制列印上次登入時間以進行互動式登入。可用性可能取決於平台支援。

範例
PrintLastLog yes
PubkeyAuthOptions

設定公鑰身份驗證選項,包括安全金鑰觸控或驗證要求(如果支援)。

範例
PubkeyAuthOptions touch-required
RefuseConnection

拒絕連接,通常在 Match 區塊內。可用性因版本而異。

範例
Match User blocked
    RefuseConnection yes
RequiredRSASize

設定 sshd 接受的最小 RSA 金鑰大小。較低的值可能會削弱安全性,並且某些版本會施加最小值。

範例
RequiredRSASize 3072
RDomain

在支援路由域的平台上為會話選擇路由域。這是特定於平台的。

範例
RDomain 1
SecurityKeyProvider

FIDO 安全金鑰中間件庫的路徑;如果不設定它,則會使用可用的內建支援。

範例
SecurityKeyProvider /usr/local/lib/libsk-libfido2.so
SshdAuthPath

支援 sshd 驗證幫助程式的版本和平台上的路徑。通常由套件管理。

範例
SshdAuthPath /usr/libexec/sshd-auth
SshdSessionPath

支援 sshd 會話幫助程式的版本和平台上的路徑。通常由套件管理。

範例
SshdSessionPath /usr/libexec/sshd-session
StreamLocalBindMask

設定 Unix 網域轉送套接字的八進位檔案模式建立遮罩。

範例
StreamLocalBindMask 0177
StreamLocalBindUnlink

控制在建立轉送偵聽器之前是否刪除現有的 Unix 網域套接字。

範例
StreamLocalBindUnlink no
UnusedConnectionTimeout

在指定時間後關閉沒有開放通道的連線。受影響的行為和可用性因版本而異。

範例
UnusedConnectionTimeout 5m
X11DisplayOffset

設定可用於 X11 轉送的第一個顯示號碼。

範例
X11DisplayOffset 10
X11UseLocalhost

啟用時將X11轉送伺服器綁定到環回;停用它可以更廣泛地暴露顯示。

範例
X11UseLocalhost yes
XAuthLocation

用於 X11 轉送的 xauth 程式的路徑(如果適用)。

範例
XAuthLocation /usr/bin/xauth
IPQoS

為互動式和非互動式會話設定 IP 服務品質標記。網路設備可能會解釋或忽略這些標記。

範例
IPQoS lowdelay throughput
MACs

選擇訊息驗證碼演算法。更改預設值可能會影響安全性和客戶端相容性。

範例
MACs hmac-sha2-256-etm@openssh.com
SetEnv

為子會話設定環境變數。這些值會覆蓋從客戶端或使用者環境檔案接受的變數。

範例
SetEnv LANG=en_US.UTF-8
UseDNS

控制連線客戶端的反向 DNS 查找和驗證。如果 DNS 速度較慢,啟用它可能會增加延遲。

範例
UseDNS no

建議起始設定

適用於已確認公鑰登入可用,且不需要鍵盤互動式驗證的伺服器。已驗證使用者仍可使用 TCP 連接埠轉送;遠端轉送監聽限制於迴路位址。

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

此設定會停用密碼和鍵盤互動式登入,後者可能包含 PAM 或一次性驗證碼。請先確認其他管理員帳號及其金鑰能夠登入。AllowTcpForwarding yes 允許已驗證使用者轉送,請按需限制存取。請依實際需求調整。

保留目前工作階段及復原方式。將設定合併至現有設定,勿直接附加:Include 順序、較早設定值及 Match 區塊可能影響結果。先執行 sshd -t,再以 sshd -T 檢查生效設定;涉及 Match 時使用 sshd -T -C 檢查條件。依系統服務流程套用後,確認第二個登入工作階段成功,再中斷原工作階段。

權威參考

核對日期:2026 年 10 月 27 日