CentOS 7 下/etc/ssh/sshd_config 文件解釋

来源:https://www.cnblogs.com/it-log/archive/2023/06/29/17511490.html
-Advertisement-
Play Games

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ​ 本文討論了四種語言的非同步,強調了它在創建高效、響應迅速的應用程式中的作用。 作為一名擁有多年主要使用 Java 工作經驗的軟體開發人員,當我最近為一個新項目切換到 Python 時,我發現自己很感興趣。這種轉變促使我探索各種語言的非同步編程世界,包括 Java、Python、JavaScript ...
  • 學習課程: 【這可能是B站講的最好的Servlet教程,5小時打通Servlet全套教程丨2022最新版,輕鬆掌握servlet基礎+案例實操】 https://www.bilibili.com/video/BV1Kr4y1V7ZE/?share_source=copy_web&vd_source= ...
  • Go介面壓測的第三方包,一個很好用的負載測試工具。**vegeta測試工具組件(可執行文件)**支持linux以及mac系統,這裡指的是通過終端命令行進行進行測試,不需要從代碼層面使用這個工具的時候支持linux以及mac系統,在windows上可能會出現問題。但是通過**vegeta包代碼執行** ...
  • > [MaterialSkin.2](https://www.nuget.org/packages/MaterialSkin.2 "MaterialSkin.2") 控制項包是在 [MaterialSkin](https://github.com/IgnaceMaes/MaterialSkin "Ma ...
  • ## 介紹 1. HttpLogging 是 .NET 6 新加入的一個框架內置的中間件 2. 可以提供以下信息的日誌: - HTTP請求信息 - Common properties - Headers - Body - HTTP響應信息 ## 使用 添加 ```csharp builder.Ser ...
  • # 創建Avalonia 模板項目-基礎 Avalonia是一個跨平臺的.NET框架,用於構建漂亮、現代的圖形用戶界面(GUI)。使用Avalonia,您可以從單個代碼庫創建適用於Windows、macOS、 Linux、iOS、Android和Web Assembly的原生應用程式。 本文部分內容 ...
  • 繼上篇:Taurus .Net Core 微服務開源框架:Admin 插件【2】 - 系統環境信息管理,本篇繼續介紹下一個內容:系統指標節點... ...
  • 在使用Quark-n開發板時,想打開瀏覽器網上衝浪,但是出現了下麵的情況。 說明我沒有這個軟體,那就安裝一手。 1、先執行軟體更新,在終端中敲入指令 sudo apt-get update 2、更新Firefox sudo apt install firefox 然後蹦出來這個畫面: apt使用出錯 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...