文件路徑是
/etc/ssh/sshd_config
參數詳解:
當然可以,以下是對 sshd_config
文件中一些常見參數的解釋:
1. Include /etc/ssh/sshd_config.d/*.conf
#
- 含義:包含
/etc/ssh/sshd_config.d/
目錄下所有以.conf
結尾的配置文件。這允許將配置分散到多個文件中,便於管理和維護。 - 作用:使得配置文件更加模組化,方便在不同場景下添加或修改配置。
2. PermitRootLogin yes
#
- 含義:允許 root 用戶通過 SSH 登錄。
- 作用:如果設置為
yes
,root 用戶可以使用密碼或密鑰登錄。如果設置為prohibit-password
,root 用戶只能使用密鑰登錄,不能使用密碼。如果設置為without-password
或without-password,prohibit-password
,則 root 用戶不能使用密碼登錄,但可以使用密鑰登錄。如果設置為no
,則 root 用戶不能通過 SSH 登錄。
3. AuthorizedKeysFile .ssh/authorized_keys
#
- 含義:指定存儲授權的公鑰文件的路徑。
- 作用:默認情況下,SSH 會在用戶的
~/.ssh/authorized_keys
文件中查找授權的公鑰。這個文件包含了允許登錄的公鑰列表。
4. PasswordAuthentication yes
#
- 含義:是否允許使用密碼進行認證。
- 作用:如果設置為
yes
,允許用戶使用密碼登錄。如果設置為no
,則禁止使用密碼登錄,只能使用密鑰或其他認證方式。
5. PermitEmptyPasswords no
#
- 含義:是否允許空密碼登錄。
- 作用:如果設置為
yes
,允許使用空密碼登錄。如果設置為no
,則不允許空密碼登錄。出於安全考慮,通常建議設置為no
。
6. KbdInteractiveAuthentication yes
#
- 含義:是否允許鍵盤交互式認證。
- 作用:如果設置為
yes
,允許使用鍵盤交互式認證,如 PAM(Pluggable Authentication Modules)認證。這通常用於多因素認證。
7. UsePAM no
#
- 含義:是否使用 PAM 進行認證、賬戶處理和會話處理。
- 作用:如果設置為
yes
,SSH 將使用 PAM 進行認證。這允許通過 PAM 配置文件進行更複雜的認證策略,如多因素認證、賬戶鎖定等。如果設置為no
,則不使用 PAM。
8. Subsystem sftp /usr/lib/ssh/sftp-server
#
- 含義:定義 SFTP 子系統。
- 作用:指定 SFTP 服務的路徑。SFTP 是 SSH 文件傳輸協議,用於安全地傳輸文件。
/usr/lib/ssh/sftp-server
是 SFTP 伺服器的默認路徑。
9. Match User anoncvs
#
- 含義:匹配特定用戶或用戶組的配置。
- 作用:可以為特定用戶或用戶組設置特定的配置。例如,可以禁用某個用戶的 X11 轉發、TCP 轉發或 TTY 分配。
10. X11Forwarding no
#
- 含義:是否啟用 X11 轉發。
- 作用:如果設置為
yes
,允許通過 SSH 轉發 X11 圖形界面。這對於遠程運行圖形界面應用程序很有用。如果設置為no
,則禁止 X11 轉發。
11. AllowTcpForwarding yes
#
- 含義:是否允許 TCP 轉發。
- 作用:如果設置為
yes
,允許通過 SSH 轉發 TCP 連接。這對於設置端口轉發很有用。如果設置為no
,則禁止 TCP 轉發。
12. PermitTTY yes
#
- 含義:是否允許分配 TTY。
- 作用:如果設置為
yes
,允許為登錄會話分配 TTY。這對於交互式 shell 會話很有用。如果設置為no
,則禁止分配 TTY,通常用於非交互式會話,如命令執行或 SFTP。
13. PrintMotd yes
#
- 含義:是否打印 motd(Message of the Day)文件。
- 作用:如果設置為
yes
,在用戶登錄時打印/etc/motd
文件的內容。這個文件通常包含系統公告或重要信息。
14. PrintLastLog yes
#
- 含義:是否打印上次登錄信息。
- 作用:如果設置為
yes
,在用戶登錄時打印上次登錄的時間和地點。這有助於用戶了解賬戶的使用情況。
15. TCPKeepAlive yes
#
- 含義:是否啟用 TCP 保持活動狀態。
- 作用:如果設置為
yes
,SSH 會定期發送保持活動狀態的包,以防止連接超時。如果設置為no
,則不發送保持活動狀態的包。
16. UseDNS no
#
- 含義:是否使用 DNS 解析客戶端的 IP 地址。
- 作用:如果設置為
yes
,SSH 會嘗試通過 DNS 解析客戶端的 IP 地址。如果設置為no
,則不進行 DNS 解析,這可以提高連接速度,尤其是在 DNS 解析較慢的情況下。
17. ClientAliveInterval 0
#
- 含義:客戶端保持活動狀態的間隔時間(秒)。
- 作用:如果設置為非零值,SSH 會定期發送保持活動狀態的包,以防止連接超時。例如,設置為
60
表示每 60 秒發送一次保持活動狀態的包。
18. ClientAliveCountMax 3
#
- 含義:在斷開連接之前,未收到客戶端響應的最大次數。
- 作用:如果設置為
3
,表示在連續三次未收到客戶端響應後,SSH 會斷開連接。這有助於自動清理死連接。
19. PidFile /run/sshd.pid
#
- 含義:指定 SSH 伺服器的 PID 文件路徑。
- 作用:PID 文件用於記錄 SSH 伺服器的進程 ID,便於管理和監控。
20. MaxStartups 10:30:100
#
- 含義:控制同時啟動的未認證連接的最大數量。
- 作用:格式為
start:rate:full
,其中start
是開始拒絕新連接的未認證連接數,rate
是每個未認證連接增加的拒絕率,full
是完全拒絕新連接的未認證連接數。例如,10:30:100
表示當未認證連接數達到 10 時,每增加一個連接,拒絕率增加 30%,當未認證連接數達到 100 時,完全拒絕新連接。
21. Banner none
#
- 含義:指定登錄前顯示的橫幅文件路徑。
- 作用:如果設置為文件路徑,SSH 會在用戶登錄前顯示該文件的內容。這可以用於顯示登錄警告或法律聲明。
22. ChrootDirectory none
#
- 含義:指定用戶的 chroot 目錄。
- 作用:如果設置為目錄路徑,用戶登錄後將被限制在該目錄下,無法訪問其他目錄。這有助於提高系統的安全性。
23. VersionAddendum none
#
- 含義:在 SSH 伺服器的版本字符串中添加的附加信息。
- 作用:如果設置為字符串,該字符串將添加到 SSH 伺服器的版本字符串中。這可以用於自定義版本信息。
24. Subsystem sftp /usr/lib/ssh/sftp-server
#
- 含義:定義 SFTP 子系統。
- 作用:指定 SFTP 服務的路徑。SFTP 是 SSH 文件傳輸協議,用於安全地傳輸文件。
/usr/lib/ssh/sftp-server
是 SFTP 伺服器的默認路徑。
25. Match User anoncvs
#
- 含義:匹配特定用戶或用戶組的配置。
- 作用:可以為特定用戶或用戶組設置特定的配置。例如,可以禁用某個用戶的 X11 轉發、TCP 轉發或 TTY 分配。
這些參數的配置可以顯著影響 SSH 伺服器的行為和安全性。根據你的具體需求,合理配置這些參數可以提高系統的安全性和可用性。