CentOS 7 下/etc/ssh/sshd_config 文件詳解 SSH由客戶端和服務端的軟體組成,在客戶端可以使用的軟體有SecureCRT、putty、Xshell等,而在伺服器端運行的是一個sshd的服務,通過使用SSH,可以把所有傳輸的數據進行加密,而且也能夠防止dns和IP欺騙,此外 ...
CentOS 7 下/etc/ssh/sshd_config 文件詳解
SSH由客戶端和服務端的軟體組成,在客戶端可以使用的軟體有SecureCRT、putty、Xshell等,而在伺服器端運行的是一個sshd的服務,通過使用SSH,可以把所有傳輸的數據進行加密,而且也能夠防止dns和IP欺騙,此外,SSH傳輸的數據是經過壓縮的,可以加快傳輸速度,其伺服器端的配置文件為/etc/ssh/sshd_config。以下為sshd_config學習記錄。
[root@localhost ~]# cat /etc/ssh/sshd_config
# $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# 這是 sshd 伺服器系統範圍的配置文件。 有關更多信息,請參見sshd_config(5)。
# This sshd was compiled with PATH=/usr/local/bin:/usr/bin
# 這個 sshd 是用 PATH=/usr/local/bin:/usr/bin 編譯的。
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
# 用於 OpenSSH 附帶的預設sshd_config中的選項的策略是在可能的情況下使用預設值指定選項,但保留註釋。 未註釋的選項將覆蓋預設值。
# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
# 如果要更改 SELinux 系統上的埠,則必須將此更改告知 SELinux。
# 1、關於 SSH Server 的整體設定,包含使用的 port 、ip地址
#Port 22 # SSH 預設使用 22 這個 port,也可以使用其他 port
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress :: # 監聽的主機適配卡!舉個例子來說,如果您有兩個 IP,
# 分別是 192.168.0.100 及 192.168.2.20 ,那麼只想要開放 192.168.0.100 時,
# 就可以寫如同下麵的樣式:ListenAddress 192.168.0.100
# 只監聽來自 192.168.0.100 這個 IP 的SSH聯機,如果不使用設定的話,則預設所有介面均接受 SSH
# 2. 說明主機的 Private Key 放置的檔案,預設使用下麵的檔案即可!
HostKey /etc/ssh/ssh_host_rsa_key # SSH version 2 使用的 RSA 私鑰
#HostKey /etc/ssh/ssh_host_dsa_key # SSH version 2 使用的 DSA 私鑰
HostKey /etc/ssh/ssh_host_ecdsa_key #用ecdsa加密方式生成ssh密鑰
HostKey /etc/ssh/ssh_host_ed25519_key #用ed25519加密方式生成ssh密鑰
# Ciphers and keying #密碼和密鑰
#RekeyLimit default none
# 3. 關於登錄文件的訊息數據放置與 daemon 的名稱!
# Logging
#SyslogFacility AUTH # 當有人使用 SSH 登入系統的時候,SSH會記錄資訊,這個信息要記錄在什麼 daemon name 底下?
# 預設是以 AUTH 來設定的,即是 /var/log/secure 裡面!
# 其它可用的 daemon name 為:DAEMON,USER,AUTH,LOCAL0,LOCAL1,LOCAL2,LOCAL3,LOCAL4,LOCAL5,
SyslogFacility AUTHPRIV
#LogLevel INFO # 記錄登錄的等級!任何信息!
# 4. 安全設定項目!重要!
# Authentication: # 認證:
# 4.1 登入設定部分
#LoginGraceTime 2m
PermitRootLogin no # PermitRootLogin參數指定root用戶是否可以使用ssh登錄。 建議設置為 no。
#StrictModes yes # 當使用者的 host key 改變之後,Server 就不接受聯機,可以抵擋部分的木馬程式!
MaxAuthTries 4 # MaxAuthTries參數指定每個連接允許的最大驗證嘗試次數。 當登錄失敗次數達到設置的一半時,錯誤消息將被寫入syslog文件詳細記錄登錄失敗。
#MaxSessions 10 # 最大會話數
#PubkeyAuthentication yes # 公鑰身份驗證,預設yes。
# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2 # 預設設置是同時選中兩者 .ssh/authorized_keys 和 .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys # 但這被覆蓋,因此安裝只會檢查 .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys # 授權密鑰文件 .ssh/authorized_keys
#AuthorizedPrincipalsFile none # 授權主體文件 none
#AuthorizedKeysCommand none # 授權密鑰命令 none
#AuthorizedKeysCommandUser nobody # 授權密鑰命令用戶 nobody
# 4.2 認證部分
# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts # 為此,您還需要 /etc/ssh/ssh_known_hosts 中的主機密鑰
#HostbasedAuthentication no # 基於主機的身份驗證,HostbasedAuthentication參數指定身份驗證是否允許。預設值為 no。
# Change to yes if you don't trust ~/.ssh/known_hosts for # 如果您不信任 ~/.ssh/known_hosts 的 Hostbased身份驗證,請更改為 yes
# HostbasedAuthentication
#IgnoreUserKnownHosts no # 忽略用戶已知主機
# Don't read the user's ~/.rhosts and ~/.shosts files # 不要讀取用戶的 ~/.rhosts 和 ~/.shosts 文件
#IgnoreRhosts yes # 忽略主機
# To disable tunneled clear text passwords, change to no here! # 要禁用隧道明文密碼,請在此處更改為否!
PasswordAuthentication yes # 密碼身份驗證,設置為yes
PermitEmptyPasswords no # 允許空密碼,設置為no
# Change to no to disable s/key passwords # 更改為否以禁用 s/key 密碼
#ChallengeResponseAuthentication yes # 質詢響應身份驗證
ChallengeResponseAuthentication no
# 4.3 與 Kerberos 有關的參數設定!沒有 Kerberos 主機不用設定!
# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
#KerberosUseKuserok yes
# 與 GSSAPI 有關的參數設定,指定是否允許基於GSSAPI的用戶認證,僅適用於SSH2,GSSAPI 是一套類似 Kerberos 5 的通用網路安全系統介面。
# GSSAPI options
GSSAPIAuthentication yes # GSSAPI認證,指定是否允許基於GSSAPI的用戶認證
GSSAPICleanupCredentials no # GSSAPI清理憑據,設置是否在用戶退出登錄是自動銷毀用戶的憑證緩存
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no # GSSAPI 密鑰交換
#GSSAPIEnablek5users no
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# 將其設置為“是”以啟用 PAM 身份驗證、帳戶處理和會話處理。如果啟用此功能,將允許通過質詢響應身份驗證和密碼身份驗證進行 PAM 身份驗證。
# 根據您的 PAM 配置,通過 ChallengeResponseAuthentication 進行的 PAM 身份驗證可能會繞過“PermitRootLogin without-password”的設置。
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
# WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several
# problems.
# 如果您只希望 PAM 帳戶和會話檢查在沒有 PAM 身份驗證的情況下運行,請啟用此選項,
#但將 PasswordAuthentication 和 ChallengeResponseAuthentication 設置為“no”。
#警告:“UsePAM no”在 Red Hat Enterprise Linux 中不受支持,可能會導致多個問題。
UsePAM yes # 設置是否通過PAM驗證
#AllowAgentForwarding yes
#AllowTcpForwarding yes # 設置是否允許允許tcp埠轉發,保護其他的tcp連接
#GatewayPorts no
X11Forwarding yes # 設置是否允許X11轉發
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
#PrintMotd yes #PrintMotd 用來設置sshd是否在用戶登錄時顯示“/etc/motd”中的信息,可以選在在“/etc/motd”中加入警告的信息
#PrintLastLog yes #PrintLastLog 是否顯示上次登錄信息
#TCPKeepAlive yes #TCPKeepAlive 是否持續連接,設置yes可以防止死連接
#一般而言,如果設定這項目的話,那麼 SSH Server 會傳送 KeepAlive 的訊息給 Client 端,以確保兩者的聯機正常!
#這種消息可以檢測到死連接、連接不當關閉、客戶端崩潰等異常。在這個情況下,任何一端死掉後, SSH 可以立刻知道,而不會有僵屍程式的發生!
#UseLogin no #UseLogin 設置是否在互動式會話的登錄過程中使用。預設值是"no"。
# 如果開啟此指令,那麼X11Forwarding 將會被禁止,因為login不知道如何處理 xauth cookies 。
# 需要註意的是,在SSH底下本來就不接受 login 這個程式的登入,如果指UsePrivilegeSeparation ,那麼它將在認證完成後被禁用。
#UsePrivilegeSeparation sandbox
#PermitUserEnvironment no
#Compression delayed
ClientAliveInterval 300 # 客戶端存活間隔,ClientAliveInterval變數設置時,在指定時間內沒有活動的ssh會話將終止。
ClientAliveCountMax 3 # 最大活動客戶端計數,ClientAliveCountMax變數設置時,sshd將在每個ClientAliveInterval間隔發送客戶端alive的消息。
sshd在未收到任何客戶端回應前最多允許發送多少個"alive"消息,到達這個上限後ssh會話將被終止。
# 例如,如果ClientAliveInterval設置為15,ClientAliveCountMax設置為3,那麼無應答的客戶端會在45秒後被強制斷開。
#ShowPatchLevel no
#UseDNS yes # DNS解析,用ssh登錄伺服器,發現登錄緩慢,可以設置為 no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none
# no default banner path
#Banner none
# Accept locale-related environment variables # 接受與區域設置相關的環境變數
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
# AcceptEnv 指定客戶端發送的哪些環境變數將會被傳遞到會話環境中。
##註意:只有SSH-2協議支持環境變數的傳遞。指令的值是空格分隔的變數名列表(其中可以使用'*'和'?'作為通配符)。
####也可以使用多個 AcceptEnv 達到同樣的目的。需要註意的是,有些環境變數可能會被用於繞過禁止用戶使用的環境變數。
#####由於這個原因,該指令應當小心使用。預設是不傳遞任何環境變數。
# override default of no subsystems
Subsystem sftp /usr/libexec/openssh/sftp-server
# Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand cvs server
# 以下選項可用於限制哪些用戶和組可以通過SSH訪問系統。
AllowUsers root user01 # AllowUsers變數為系統管理員提供允許特定用戶通過ssh進入系統的選項。
#AllowGroups <grouplist> # AllowGroups變數為系統管理員提供允許特定用戶組的用戶通過ssh進入系統的選項。
#DenyUsers <userlist> # DenyUsers變數為系統管理員提供拒絕特定用戶通過ssh進入系統的選項。
#DenyGroups <grouplist> # DenyGroups變數為系統管理員提供拒絕特定用戶組的用戶通過ssh進入系統的選項。
Ciphers aes256-ctr,aes192-ctr,aes128-ctr # 此變數限制SSH在通信期間可以使用的密碼類型。
MACs hmac-sha2-512,hmac-sha2-256 # 此變數限制SSH在通信期間可以使用的MAC演算法的類型。
參考連接:https://blog.51cto.com/lookingdream/1826618