1. 程式人生 > >Linux下SSH中配置說明

Linux下SSH中配置說明

let order 個數 ces news 虛擬機 fas 專用 war

SSH 協議:安全外殼協議。為 Secure Shell 的縮寫。SSH 為建立在應用層和傳輸層基礎上的安全協議。

sshd服務使用SSH協議可以用來進行遠程控制,或在計算機之間傳送文件。而實現此功能的傳統方式,如telnet(終端仿真協議)都是極為不安全的,並且會使用明文傳送密碼。

OpenSSH軟件包,提供了服務端後臺程序和客戶端工具,用來加密遠程控件和文件傳輸過程中的數據,並由此來代替原來的類似服務。

安裝包:

OpenSSH 服務需要4個軟件包

[root@xuegod63 Packages]#ls openssh*

openssh-5.3p1-94.el6.x86_64.rpm openssh-clients-5.3p1-94.el6.x86_64.rpm

openssh-askpass-5.3p1-94.el6.x86_64.rpm openssh-server-5.3p1-94.el6.x86_64.rpm

每個軟件包的作用:

openssh-5.3p1-94.el6.x86_64.rpm:包含OpenSSH服務器及客戶端需要的核心文件

openssh-clients-5.3p1-94.el6.x86_64.rpm:OpenSSH客戶端軟件包

openssh-server-5.3p1-94.el6.x86_64.rpm:OpenSSH服務器軟件包

[root@xuegod63 Packages]#rpm -qpi openssh-5.3p1-94.el6.x86_64.rpm

OpenSSH 配置文件

OpenSSH 常用配置文件有兩個/etc/ssh/ssh_config 和 /etc/ssh/sshd_config

ssh_config 為客戶端配置文件

sshd_config 為服務器端配置文件

服務啟動和關閉

方法1:

[root@xuegod63 ~]#service sshd restart | start | stop | status | reload

方法2:

[root@xuegod63 ~]#/etc/init.d/sshd start | stop | restart | status | reload

開機自動啟動服務:

[root@xuegod63 ~]#chkconfig sshd on

[root@xuegod63 ~]#chkconfig --list sshd

sshd 0:關閉 1:關閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關閉

[root@xuegod63 ~]#chkconfig sshd off

[root@xuegod63 ~]#chkconfig --list sshd

sshd 0:關閉 1:關閉 2:關閉 3:關閉 4:關閉 5:關閉 6:關閉

SSH運程登錄:身份驗證

(1)口令驗證

ssh [遠程主機用戶名] @[遠程服務器主機名或IP地址]

如果用root進程登錄遠程主機可以省略用戶名:

普通用戶

[root@xuegod64 ~]#useradd rm

[root@xuegod64 ~]# echo123456 | passwd --stdin rm

更改用戶 rm 的密碼。

passwd: 所有的身份驗證令牌已經成功更新。

[root@xuegod63 ~]# [email protected]

第一次登錄服務器時系統沒有保存遠程主機的信息,為了確認該主機身份會提示用戶是否繼續連

接,輸入yes 後登錄,這時系統會將遠程服務器信息寫入用戶主目錄下的$HOME/.ssh/known_hosts 文件中,下次再進行登錄時因為保存有該主機信息就不會再提示了

或:

ssh -l [遠程主機用戶名] [遠程服務器主機名或IP 地址]

例:[root@xuegod63~]# ssh -l rm 192.168.1.64

-l login_name

先整體看一下服務器端的配置文件

註:參數前面有#,表示是默認值。 當然#號也表示註釋。

/etc/ssh/sshd_config配置文件

Port 22

# SSH 預設使用 22 這個port,也可以使用多個port,即重復使用 port 這個設定項目!

# 例如想要開放 sshd 端口為 22和 222 ,則多加一行內容為:Port 222 即可

# 然後重新啟動 sshd 這樣就好了。 建議大家修改 port number 為其它端口。防止別人暴力破解。

例:修改sshd服務默認監聽的端口為22和222

[root@xuegod63 ~]#netstat -anptu | grep ssh

修改完端口默認端口後,登錄方法:

[root@xuegod64 ~]# ssh -p222 192.168.1.63

ListenAddress 0.0.0.0

設置sshd 服務器綁定的IP 地址,0.0.0.0 表示偵聽所有地址

例:虛擬機,添加一塊網卡。讓sshd服務器只在192.168.2.63 網絡接口上監聽

關機Linux機器,添加一塊網卡。

通過setup命令生成配置eth1配置文件。

重啟網絡

service network restart

ifup eth1

[root@xuegod163 ~]# vim/etc/ssh/sshd_config

改:

15 #ListenAddress 0.0.0.0

為:15 ListenAddress 192.168.2.63

[root@localhost network-scripts]# servicesshd restart

測試:[root@xuegod163 ~]# netstat -anptu | grep22

tcp 0 0 192.168.2.163:22 0.0.0.0:* LISTEN 3024/sshd

tcp 0 64 192.168.1.163:22 192.168.1.3:52978 ESTABLISHED 2459/sshd

[root@xuegod64 ~]# ssh -p222 192.168.1.63

ssh: connect to host192.168.1.63 port 222: Connection refused

rotocol 2

# 選擇的 SSH 協議版本,可以是 1 也可以是 2 ,CentOS 5.x 預設是僅支援 V2。

# 如果想要支持舊版 V1 ,

改:

Protocol 2

為:

Protocol 2,1

SyslogFacility AUTHPRIV

# 當有人使用 SSH 登入系統的時候,SSH 會記錄信息,這個信息要記錄的類型為AUTHPRIV。

互動:默認日誌存放在哪?

sshd服務日誌存放在: /var/log/secure。

例: 為什麽sshd配置文件中沒有指定日誌,但日誌卻存放在了: /var/log/secure?

[root@xuegod ssh]# vim/etc/rsyslog.conf 查看:

#ServerKeyBits 1024

定義服務器密匙長度

安全設定項

# PermitRootLogin yes

#是否允許 root 登入!預設是允許的,但是建議設定成 no !

#PermitEmptyPasswords no

# 若上面那一項如果設定為 yes 的話,這一項就最好設定為 no ,

# 這個項目在是否允許以空的密碼登入!當然不許!

#PasswordAuthenticationyes

#是否允許使用密碼驗證,默認為允許

#LoginGraceTime 2m #grace優雅

# 當使用者連上 SSHserver 之後,會出現輸入密碼的畫面,在該畫面中,

# 在多久時間內沒有成功連上 SSH server 就強迫斷線!若無單位則默認時間為秒!

LoginGraceTime 5

改:LoginGraceTime 2m 為:LoginGraceTime 5 ,重啟後

測試:

[root@xuegod64 ~]# ssh 192.168.1.63

停留5秒後,再次輸入,結果斷開

# PrintMotd yes

# 打印出 /etc/motd 這個文檔的內容。

[root@xuegod ~]# cat/etc/motd

[root@xuegod ~]# echo "警告!從現在開始,你所有的操作已經被記錄!" > /etc/motd

# PrintLastLog yes

# 顯示上次登入的信息!預設也是 yes !

Last login: Wed Mar 2322:12:58 2016 from 192.168.1.100

改:PrintLastLog yes

為:PrintLastLog no

就不顯示這個信息

UsePrivilegeSeparation yes

# 是否權限較低的程序來提供用戶操作。我們知道 sshd 啟動在 port 22 ,

# 因此啟動的程序是屬於 root 的身份。那麽當 student 登入後,這個設定值

# 會讓 sshd 產生一個屬於 sutdent 的 sshd 程序來使用,對系統較安全

[root@xuegod64 ~]# [email protected]

這樣,當這個進程sshd被緩存區溢出等手段,得到登錄的權限後,還是rm普通用戶。不會得到root身份。

# UseDNS yes

#一般來說,為了要判斷客戶端來源是正常合法的,因此會使用 DNS 去反查客戶端的主機名 # 不過如果是在內網互連,這項目設定為 no 會讓聯機速度比較快。

改:UseDNS yes

為:UseDNS no

改:GSSAPIAuthentication yes

為:GSSAPIAuthentication no

# PidFile /var/run/sshd.pid

# 可以放置 SSHD 這個 PID 的文檔!上述為默認值

描述
     sshd(8) 默認從 /etc/ssh/sshd_config 文件(或通過 -f 命令行選項指定的文件)讀取配置信息。
     配置文件是由"指令 值"對組成的,每行一個。空行和以‘#‘開頭的行都將被忽略。
     如果值中含有空白符或者其他特殊符號,那麽可以通過在兩邊加上雙引號(")進行界定。
     [註意]值是大小寫敏感的,但指令是大小寫無關的。

     當前所有可以使用的配置指令如下:

     AcceptEnv
             指定客戶端發送的哪些環境變量將會被傳遞到會話環境中。[註意]只有SSH-2協議支持環境變量的傳遞。
             細節可以參考 ssh_config(5) 中的 SendEnv 配置指令。
             指令的值是空格分隔的變量名列表(其中可以使用‘*‘和‘?‘作為通配符)。也可以使用多個 AcceptEnv 達到同樣的目的。
             需要註意的是,有些環境變量可能會被用於繞過禁止用戶使用的環境變量。由於這個原因,該指令應當小心使用。
             默認是不傳遞任何環境變量。

     AddressFamily
             指定 sshd(8) 應當使用哪種地址族。取值範圍是:"any"(默認)、"inet"(僅IPv4)、"inet6"(僅IPv6)。

     AllowGroups
             這個指令後面跟著一串用空格分隔的組名列表(其中可以使用"*"和"?"通配符)。默認允許所有組登錄。
             如果使用了這個指令,那麽將僅允許這些組中的成員登錄,而拒絕其它所有組。
             這裏的"組"是指"主組"(primary group),也就是/etc/passwd文件中指定的組。
             這裏只允許使用組的名字而不允許使用GID。相關的 allow/deny 指令按照下列順序處理:
             DenyUsers, AllowUsers, DenyGroups, AllowGroups

     AllowTcpForwarding
             是否允許TCP轉發,默認值為"yes"。
             禁止TCP轉發並不能增強安全性,除非禁止了用戶對shell的訪問,因為用戶可以安裝他們自己的轉發器。

     AllowUsers
             這個指令後面跟著一串用空格分隔的用戶名列表(其中可以使用"*"和"?"通配符)。默認允許所有用戶登錄。
             如果使用了這個指令,那麽將僅允許這些用戶登錄,而拒絕其它所有用戶。
             如果指定了 USER@HOST 模式的用戶,那麽 USER 和 HOST 將同時被檢查。
             這裏只允許使用用戶的名字而不允許使用UID。相關的 allow/deny 指令按照下列順序處理:
             DenyUsers, AllowUsers, DenyGroups, AllowGroups

     AuthorizedKeysFile
             存放該用戶可以用來登錄的 RSA/DSA 公鑰。
             該指令中可以使用下列根據連接時的實際情況進行展開的符號:
             %% 表示‘%‘、%h 表示用戶的主目錄、%u 表示該用戶的用戶名。
             經過擴展之後的值必須要麽是絕對路徑,要麽是相對於用戶主目錄的相對路徑。
             默認值是".ssh/authorized_keys"。

     Banner
             將這個指令指定的文件中的內容在用戶進行認證前顯示給遠程用戶。
             這個特性僅能用於SSH-2,默認什麽內容也不顯示。"none"表示禁用這個特性。

     ChallengeResponseAuthentication
             是否允許質疑-應答(challenge-response)認證。默認值是"yes"。
             所有 login.conf(5) 中允許的認證方式都被支持。

     Ciphers
             指定SSH-2允許使用的加密算法。多個算法之間使用逗號分隔。可以使用的算法如下:
             "aes128-cbc", "aes192-cbc", "aes256-cbc", "aes128-ctr", "aes192-ctr", "aes256-ctr",
             "3des-cbc", "arcfour128", "arcfour256", "arcfour", "blowfish-cbc", "cast128-cbc"
             默認值是可以使用上述所有算法。

     ClientAliveCountMax
             sshd(8) 在未收到任何客戶端回應前最多允許發送多少個"alive"消息。默認值是 3 。
             到達這個上限後,sshd(8) 將強制斷開連接、關閉會話。
             需要註意的是,"alive"消息與 TCPKeepAlive 有很大差異。
             "alive"消息是通過加密連接發送的,因此不會被欺騙;而 TCPKeepAlive 卻是可以被欺騙的。
             如果 ClientAliveInterval 被設為 15 並且將 ClientAliveCountMax 保持為默認值,
             那麽無應答的客戶端大約會在45秒後被強制斷開。這個指令僅可以用於SSH-2協議。

     ClientAliveInterval
             設置一個以秒記的時長,如果超過這麽長時間沒有收到客戶端的任何數據,
             sshd(8) 將通過安全通道向客戶端發送一個"alive"消息,並等候應答。
             默認值 0 表示不發送"alive"消息。這個選項僅對SSH-2有效。

     Compression
             是否對通信數據進行加密,還是延遲到認證成功之後再對通信數據加密。
             可用值:"yes", "delayed"(默認), "no"。

     DenyGroups
             這個指令後面跟著一串用空格分隔的組名列表(其中可以使用"*"和"?"通配符)。默認允許所有組登錄。
             如果使用了這個指令,那麽這些組中的成員將被拒絕登錄。
             這裏的"組"是指"主組"(primary group),也就是/etc/passwd文件中指定的組。
             這裏只允許使用組的名字而不允許使用GID。相關的 allow/deny 指令按照下列順序處理:
             DenyUsers, AllowUsers, DenyGroups, AllowGroups

     DenyUsers
             這個指令後面跟著一串用空格分隔的用戶名列表(其中可以使用"*"和"?"通配符)。默認允許所有用戶登錄。
             如果使用了這個指令,那麽這些用戶將被拒絕登錄。
             如果指定了 USER@HOST 模式的用戶,那麽 USER 和 HOST 將同時被檢查。
             這裏只允許使用用戶的名字而不允許使用UID。相關的 allow/deny 指令按照下列順序處理:
             DenyUsers, AllowUsers, DenyGroups, AllowGroups

     ForceCommand
             強制執行這裏指定的命令而忽略客戶端提供的任何命令。這個命令將使用用戶的登錄shell執行(shell -c)。
             這可以應用於 shell 、命令、子系統的完成,通常用於 Match 塊中。
             這個命令最初是在客戶端通過 SSH_ORIGINAL_COMMAND 環境變量來支持的。

     GatewayPorts
             是否允許遠程主機連接本地的轉發端口。默認值是"no"。
             sshd(8) 默認將遠程端口轉發綁定到loopback地址。這樣將阻止其它遠程主機連接到轉發端口。
             GatewayPorts 指令可以讓 sshd 將遠程端口轉發綁定到非loopback地址,這樣就可以允許遠程主機連接了。
             "no"表示僅允許本地連接,"yes"表示強制將遠程端口轉發綁定到統配地址(wildcard address),
             "clientspecified"表示允許客戶端選擇將遠程端口轉發綁定到哪個地址。

     GSSAPIAuthentication
             是否允許使用基於 GSSAPI 的用戶認證。默認值為"no"。僅用於SSH-2。

     GSSAPICleanupCredentials
             是否在用戶退出登錄後自動銷毀用戶憑證緩存。默認值是"yes"。僅用於SSH-2。

     HostbasedAuthentication
             這個指令與 RhostsRSAAuthentication 類似,但是僅可以用於SSH-2。推薦使用默認值"no"。
             推薦使用默認值"no"禁止這種不安全的認證方式。

     HostbasedUsesNameFromPacketOnly
             在開啟 HostbasedAuthentication 的情況下,
             指定服務器在使用 ~/.shosts ~/.rhosts /etc/hosts.equiv 進行遠程主機名匹配時,是否進行反向域名查詢。
             "yes"表示 sshd(8) 信任客戶端提供的主機名而不進行反向查詢。默認值是"no"。

     HostKey
             主機私鑰文件的位置。如果權限不對,sshd(8) 可能會拒絕啟動。
             SSH-1默認是 /etc/ssh/ssh_host_key 。
             SSH-2默認是 /etc/ssh/ssh_host_rsa_key/etc/ssh/ssh_host_dsa_key 。
             一臺主機可以擁有多個不同的私鑰。"rsa1"僅用於SSH-1,"dsa"和"rsa"僅用於SSH-2。

     IgnoreRhosts
             是否在 RhostsRSAAuthenticationHostbasedAuthentication 過程中忽略 .rhosts.shosts 文件。
             不過 /etc/hosts.equiv/etc/shosts.equiv 仍將被使用。推薦設為默認值"yes"。

     IgnoreUserKnownHosts
             是否在 RhostsRSAAuthenticationHostbasedAuthentication 過程中忽略用戶的 ~/.ssh/known_hosts 文件。
             默認值是"no"。為了提高安全性,可以設為"yes"。

     KerberosAuthentication
             是否要求用戶為 PasswordAuthentication 提供的密碼必須通過 Kerberos KDC 認證,也就是是否使用Kerberos認證。
             要使用Kerberos認證,服務器需要一個可以校驗 KDC identity 的 Kerberos servtab 。默認值是"no"。

     KerberosGetAFSToken
             如果使用了 AFS 並且該用戶有一個 Kerberos 5 TGT,那麽開啟該指令後,
             將會在訪問用戶的家目錄前嘗試獲取一個 AFS token 。默認為"no"。

     KerberosOrLocalPasswd
             如果 Kerberos 密碼認證失敗,那麽該密碼還將要通過其它的認證機制(比如 /etc/passwd)。
             默認值為"yes"。

     KerberosTicketCleanup
             是否在用戶退出登錄後自動銷毀用戶的 ticket 。默認值是"yes"。

     KeyRegenerationInterval
             在SSH-1協議下,短命的服務器密鑰將以此指令設置的時間為周期(秒),不斷重新生成。
             這個機制可以盡量減小密鑰丟失或者黑客攻擊造成的損失。
             設為 0 表示永不重新生成,默認為 3600(秒)。

     ListenAddress
             指定 sshd(8) 監聽的網絡地址,默認監聽所有地址。可以使用下面的格式:

                   ListenAddress host|IPv4_addr|IPv6_addr
                   ListenAddress host|IPv4_addr:port
                   ListenAddress [host|IPv6_addr]:port

             如果未指定 port ,那麽將使用 Port 指令的值。
             可以使用多個 ListenAddress 指令監聽多個地址。

     LoginGraceTime
             限制用戶必須在指定的時限內認證成功,0 表示無限制。默認值是 120 秒。

     LogLevel
             指定 sshd(8) 的日誌等級(詳細程度)。可用值如下:
             QUIET, FATAL, ERROR, INFO(默認), VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3
             DEBUG 與 DEBUG1 等價;DEBUG2 和 DEBUG3 則分別指定了更詳細、更羅嗦的日誌輸出。
             比 DEBUG 更詳細的日誌可能會泄漏用戶的敏感信息,因此反對使用。

     MACs
             指定允許在SSH-2中使用哪些消息摘要算法來進行數據校驗。
             可以使用逗號分隔的列表來指定允許使用多個算法。默認值(包含所有可以使用的算法)是:
             hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-sha1-96,hmac-md5-96

     Match
             引入一個條件塊。塊的結尾標誌是另一個 Match 指令或者文件結尾。
             如果 Match 行上指定的條件都滿足,那麽隨後的指令將覆蓋全局配置中的指令。
             Match 的值是一個或多個"條件-模式"對。可用的"條件"是:User, Group, Host, Address 。
             只有下列指令可以在 Match 塊中使用:AllowTcpForwarding, Banner,
             ForceCommand, GatewayPorts, GSSApiAuthentication,
             KbdInteractiveAuthentication, KerberosAuthentication,
             PasswordAuthentication, PermitOpen, PermitRootLogin,
             RhostsRSAAuthentication, RSAAuthentication, X11DisplayOffset,
             X11Forwarding, X11UseLocalHost

     MaxAuthTries
             指定每個連接最大允許的認證次數。默認值是 6 。
             如果失敗認證的次數超過這個數值的一半,連接將被強制斷開,且會生成額外的失敗日誌消息。

     MaxStartups
             最大允許保持多少個未認證的連接。默認值是 10 。
             到達限制後,將不再接受新連接,除非先前的連接認證成功或超出 LoginGraceTime 的限制。

     PasswordAuthentication
             是否允許使用基於密碼的認證。默認為"yes"。

     PermitEmptyPasswords
             是否允許密碼為空的用戶遠程登錄。默認為"no"。

     PermitOpen
             指定TCP端口轉發允許的目的地,可以使用空格分隔多個轉發目標。默認允許所有轉發請求。
             合法的指令格式如下:
                   PermitOpen host:port
                   PermitOpen IPv4_addr:port
                   PermitOpen [IPv6_addr]:port
             "any"可以用於移除所有限制並允許一切轉發請求。

     PermitRootLogin
             是否允許 root 登錄。可用值如下:
             "yes"(默認) 表示允許。"no"表示禁止。
             "without-password"表示禁止使用密碼認證登錄。
             "forced-commands-only"表示只有在指定了 command 選項的情況下才允許使用公鑰認證登錄。
                                   同時其它認證方法全部被禁止。這個值常用於做遠程備份之類的事情。

     PermitTunnel
             是否允許 tun(4) 設備轉發。可用值如下:
             "yes", "point-to-point"(layer 3), "ethernet"(layer 2), "no"(默認)。
             "yes"同時蘊含著"point-to-point"和"ethernet"。

     PermitUserEnvironment
             指定是否允許 sshd(8) 處理 ~/.ssh/environment 以及 ~/.ssh/authorized_keys 中的 environment= 選項。
             默認值是"no"。如果設為"yes"可能會導致用戶有機會使用某些機制(比如 LD_PRELOAD)繞過訪問控制,造成安全漏洞。

     PidFile
             指定在哪個文件中存放SSH守護進程的進程號,默認為 /var/run/sshd.pid 文件。

     Port
             指定 sshd(8) 守護進程監聽的端口號,默認為 22 。可以使用多條指令監聽多個端口。
             默認將在本機的所有網絡接口上監聽,但是可以通過 ListenAddress 指定只在某個特定的接口上監聽。

     PrintLastLog
             指定 sshd(8) 是否在每一次交互式登錄時打印最後一位用戶的登錄時間。默認值是"yes"。

     PrintMotd
             指定 sshd(8) 是否在每一次交互式登錄時打印 /etc/motd 文件的內容。默認值是"yes"。

     Protocol
             指定 sshd(8) 支持的SSH協議的版本號。
             ‘1‘和‘2‘表示僅僅支持SSH-1和SSH-2協議。"2,1"表示同時支持SSH-1和SSH-2協議。

     PubkeyAuthentication
             是否允許公鑰認證。僅可以用於SSH-2。默認值為"yes"。

     RhostsRSAAuthentication
             是否使用強可信主機認證(通過檢查遠程主機名和關聯的用戶名進行認證)。僅用於SSH-1。
             這是通過在RSA認證成功後再檢查 ~/.rhosts 或 /etc/hosts.equiv 進行認證的。
             出於安全考慮,建議使用默認值"no"。

     RSAAuthentication
             是否允許使用純 RSA 公鑰認證。僅用於SSH-1。默認值是"yes"。

     ServerKeyBits
             指定臨時服務器密鑰的長度。僅用於SSH-1。默認值是 768(位)。最小值是 512 。

     StrictModes
             指定是否要求 sshd(8) 在接受連接請求前對用戶主目錄和相關的配置文件進行宿主和權限檢查。
             強烈建議使用默認值"yes"來預防可能出現的低級錯誤。

     Subsystem
             配置一個外部子系統(例如,一個文件傳輸守護進程)。僅用於SSH-2協議。
             值是一個子系統的名字和對應的命令行(含選項和參數)。比如"sft /bin/sftp-server"。

     SyslogFacility
             指定 sshd(8) 將日誌消息通過哪個日誌子系統(facility)發送。有效值是:
             DAEMON, USER, AUTH(默認), LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7

     TCPKeepAlive
             指定系統是否向客戶端發送 TCP keepalive 消息。默認值是"yes"。
             這種消息可以檢測到死連接、連接不當關閉、客戶端崩潰等異常。
             可以設為"no"關閉這個特性。

     UseDNS
             指定 sshd(8) 是否應該對遠程主機名進行反向解析,以檢查此主機名是否與其IP地址真實對應。默認值為"yes"。

     UseLogin
             是否在交互式會話的登錄過程中使用 login(1) 。默認值是"no"。
             如果開啟此指令,那麽 X11Forwarding 將會被禁止,因為 login(1) 不知道如何處理 xauth(1) cookies 。
             需要註意的是,login(1) 是禁止用於遠程執行命令的。
             如果指定了 UsePrivilegeSeparation ,那麽它將在認證完成後被禁用。

     UsePrivilegeSeparation
             是否讓 sshd(8) 通過創建非特權子進程處理接入請求的方法來進行權限分離。默認值是"yes"。
             認證成功後,將以該認證用戶的身份創建另一個子進程。
             這樣做的目的是為了防止通過有缺陷的子進程提升權限,從而使系統更加安全。

     X11DisplayOffset
             指定 sshd(8) X11 轉發的第一個可用的顯示區(display)數字。默認值是 10 。
             這個可以用於防止 sshd 占用了真實的 X11 服務器顯示區,從而發生混淆。

     X11Forwarding
             是否允許進行 X11 轉發。默認值是"no",設為"yes"表示允許。
             如果允許X11轉發並且sshd(8)代理的顯示區被配置為在含有通配符的地址(X11UseLocalhost)上監聽。
             那麽將可能有額外的信息被泄漏。由於使用X11轉發的可能帶來的風險,此指令默認值為"no"。
             需要註意的是,禁止X11轉發並不能禁止用戶轉發X11通信,因為用戶可以安裝他們自己的轉發器。
             如果啟用了 UseLogin ,那麽X11轉發將被自動禁止。

     X11UseLocalhost
             sshd(8) 是否應當將X11轉發服務器綁定到本地loopback地址。默認值是"yes"。
             sshd 默認將轉發服務器綁定到本地loopback地址並將 DISPLAY 環境變量的主機名部分設為"localhost"。
             這可以防止遠程主機連接到 proxy display 。不過某些老舊的X11客戶端不能在此配置下正常工作。
             為了兼容這些老舊的X11客戶端,你可以設為"no"。

     XAuthLocation
             指定 xauth(1) 程序的絕對路徑。默認值是 /usr/X11R6/bin/xauth

時間格式
     在 sshd(8) 命令行參數和配置文件中使用的時間值可以通過下面的格式指定:time[qualifier] 。
     其中的 time 是一個正整數,而 qualifier 可以是下列單位之一:
           <>    秒
           s | Sm | M   分鐘
           h | H   小時
           d | Dw | W   星期

     可以通過指定多個數值來累加時間,比如:
           1h30m   1 小時 30 分鐘 (90 分鐘)

文件
     /etc/ssh/sshd_config
             sshd(8) 的主配置文件。這個文件的宿主應當是root,權限最大可以是"644"。

參見
     sshd(8)

作者
     OpenSSH is a derivative of the original and free ssh 1.2.12 release by
     Tatu Ylonen.  Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo
     de Raadt and Dug Song removed many bugs, re-added newer features and cre-
     ated OpenSSH.  Markus Friedl contributed the support for SSH protocol
     versions 1.5 and 2.0.  Niels Provos and Markus Friedl contributed support
     for privilege separation.

OpenBSD 4.2                     January 1, 2008                              9

Vbird網絡篇裏的說明:

# 1. 關於 SSH Server 的整體設定,包含使用的 port 啦,以及使用的密碼演算方式
# 先留意一下,在預設的文件內,只要是被批註的設定值(#),即為『默認值!』
Port 22
# SSH 預設使用 22 這個 port,也可以使用多個 port,即重復使用 port 這個設定項目! # 例如想要開放 sshd 在 22 與 443 ,則多加一行內容為:
# Port 443
# 這樣就好了!不過,不建議修改 port number

rotocol 1,2
# 選擇的 SSH 協議版本,可以是 1 也可以是 2 ,
# 如果要同時支持兩者,就必須要使用 2,1 這個分隔了(Protocol 1,2)! # 目前我們會建議您,直接使用 Protocol 2 即可!

#ListenAddress 0.0.0.0
# 監聽的主機適配卡!舉個例子來說,如果您有兩個 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

#PidFile /var/run/sshd.pid
# 可以放置 SSHD 這個 PID 的文件!左列為默認值

LoginGraceTime 2m
# 當使用者連上 SSH server 之後,會出現輸入密碼的畫面,在該畫面中,
# 在多久時間內沒有成功連上 SSH server ,就斷線!若無單位則預設時間為秒!

Compression yes
# 是否可以使用壓縮指令?當然可以

# 2. 說明主機的 Private Key 放置的檔案,預設使用下面的檔案即可!

HostKey /etc/ssh/ssh_host_key # SSH version 1 使用的私鑰
HostKey /etc/ssh/ssh_host_rsa_key # SSH version 2 使用的 RSA 私鑰
HostKey /etc/ssh/ssh_host_dsa_key # SSH version 2 使用的 DSA 私鑰
# 還記得我們在主機的 SSH 聯機流程裏面談到的,這裏就是 Host Key

# 2.1 關於 version 1 的一些設定!
KeyRegenerationInterval 1h
# 由前面聯機的說明可以知道, version 1 會使用 server 的 Public Key ,

# 那麽如果這個 Public Key 被偷的話,豈不完蛋?所以需要每隔一段時間
# 來重新建立一次!這裏的時間為秒!不過我們通常都僅使用 version 2 ,
# 所以這個設定可以被忽略喔!

ServerKeyBits 768
# 沒錯!這個就是 Server key 的長度!用默認值即可。

# 3. 關於登錄文件的訊息數據放置與 daemon 的名稱!
SyslogFacility AUTHPRIV
# 當有人使用 SSH 登入系統的時候,SSH 會記錄信息,這個信息要記錄在什麽 daemon name

# 底下?預設是以 AUTH 來設定的,即是 /var/log/secure 裏面!
# 其它可用的 daemon name 為:DAEMON,USER,AUTH,LOCAL0,LOCAL1,LOCAL2,LOCAL3,LOCAL4,LOCAL5,

LogLevel INFO
# 登錄記錄的等級!註意登機信息可參照vbird基礎篇詳解。

# 4. 安全設定項目!極重要!
# 4.1 登入設定部分
PermitRootLogin no
# 是否允許 root 登入!預設是允許的,但是建議設定成 no!

UserLogin no
# 在 SSH 底下本來就不接受 login 這個程序的登入!

StrictModes yes
# 當使用者的 host key 改變之後,Server 就不接受聯機,可以抵擋部分的木馬程序!

RSAAuthentication yes

# 是否使用純的 RSA 認證!?僅針對 version 1 !

PubkeyAuthentication yes

# 是否允許 Public Key ?當然允許啦!僅針對 version 2

AuthorizedKeysFile .ssh/authorized_keys
# 上面這個在設定若要使用不需要密碼登入的賬號時,那麽那個賬號的存放密碼所在文件名!

# 這個設定值很重要喔!文件名記一下!

# 4.2 認證部分
RhostsAuthentication no
# 本機系統不使用 .rhosts,因為僅使用 .rhosts 太不安全了,所以這裏一定要設定為 no

IgnoreRhosts yes
# 是否取消使用 ~/.ssh/.rhosts 來做為認證!當然是!

RhostsRSAAuthentication no
# 這個選項是專門給 version 1 用的,使用 rhosts 文件在 /etc/hosts.equiv

# 配合 RSA 演算方式來進行認證!不要使用啊!

HostbasedAuthentication no
# 這個項目與上面的項目類似,不過是給 version 2 使用的!

IgnoreUserKnownHosts no
# 是否忽略家目錄內的 ~/.ssh/known_hosts 這個文件所記錄的主機內容?

# 當然不要忽略,所以這裏就是 no 啦!

PasswordAuthentication yes
# 密碼驗證當然是需要的!所以這裏寫 yes 啰!

PermitEmptyPasswords no
# 若上面那一項如果設定為 yes 的話,這一項就最好設定為 no

# 這個項目在是否允許以空的密碼登入!當然不許!

ChallengeResponseAuthentication no
# 允許任何的密碼認證!所以,任何 login.conf 規定的認證方式,均可適用!
# 但目前我們比較喜歡使用 PAM 模塊幫忙管理認證,因此這個選項可以設定為 no 喔! UsePAM yes
# 利用 PAM 管理使用者認證有很多好處,可以記錄與管理。
# 所以這裏我們建議您使用 UsePAM 且 ChallengeResponseAuthentication 設定為 no

# 4.3 與 Kerberos 有關的參數設定!因為我們沒有 Kerberos 主機,所以底下不用設定!

#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes

#KerberosTgtPassing no# 4.4 底下是有關在 X-Window 底下使用的相關設定!

X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes

# 4.5 登入後的項目:
PrintMotd no
# 登入後是否顯示出一些信息呢?例如上次登入的時間、地點等等,預設是 yes
# 亦即是打印出 /etc/motd 這個檔案的內容。但是,如果為了安全,可以考慮改為 no !

PrintLastLog yes
# 顯示上次登入的信息!可以啊!預設也是 yes !

KeepAlive yes
# 一般而言,如果設定這項目的話,那麽 SSH Server 會傳送 KeepAlive 的訊息給
# Client 端,以確保兩者的聯機正常!在這個情況下,任何一端死掉後,SSH 可以立刻知道!而不會有僵屍程序的發生!

UsePrivilegeSeparation yes
# 使用者的權限設定項目!就設定為 yes 吧!

MaxStartups 10
# 同時允許幾個尚未登入的聯機畫面?當我們連上 SSH ,但是尚未輸入密碼時,
# 這個時候就是我們所謂的聯機畫面啦!在這個聯機畫面中,為了保護主機,
# 所以需要設定最大值,預設最多十個聯機畫面,而已經建立聯機的不計算在這十個當中

# 4.6 關於使用者抵擋的設定項目:
DenyUsers *
# 設定受抵擋的使用者名稱,如果是全部的使用者,那就是全部擋吧!

# 若是部分使用者,可以將該賬號填入!例如下列!
DenyUsers test

DenyGroups test
# 與 DenyUsers 相同!僅抵擋幾個群組而已!

# 5. 關於 SFTP 服務的設定項目!

Subsystem sftp /usr/lib/ssh/sftp-server

在多宿主主機上,使用ListenAddress xxx.xxx.xxx.xxx來限制SSH只監聽一個網絡接口。

空閑連接時間,IdleTimeout xx 如果是0代表什麽都不做,保持連接。否則,超時就斷開連
接,可以用s,m,h,d,w表示。

KeepAlive YES/NO 可以斷開失效的連接,比如客戶端崩潰。

失敗的登錄
LogingGraceTime 60 限定用戶必須在60秒內成功進行認證。 0值表禁用。命令行選項用
-g

PasswordGuesses 5 如果連接請求使用密碼認證,那麽sshd2就只允許客戶端嘗試五次。
(SSH2)

限制並發連接
MaxConnections 32 最大32個連接(SSH2)

逆向IP映射
SSH2服務器可以根據客戶端地址進行逆向DNS查詢,以確保客戶端的地址就是這個地址。
如果檢查失敗,連接拒絕。
RequireReverseMapping yes (ssh2)

轉發
AllowTcp-Forwarding yes
X11Forwarding yes

服務器密鑰生成
該密鑰用來對客戶端/服務器之間的通信進行保護。是臨時的,永遠不會保存在磁盤上。服
務器在啟動時生成這個密鑰。並以固定的周期重新生成。缺省長度是768位,最小為512,
可以ServerKeyBits 2048 指定長度。用KeyRegenerationInterval 1200指定周期。 命令行選
項:-k

加密算法
Ciphers any 允許所有支持算法。其它算法包括
3des-cbc,blowfish-cbc,twofish-cbc,arcfour,none

mac算法
MAC關鍵字可以讓用戶選擇sshd2進行完整性檢測所使用的算法,稱為消息認證代碼。用
於sshd2的有hmac-sha1,hmac-md5,hmac-md5-96。

在OPENSSH中,用戶可以用Protocol關鍵字選擇支持SSH-1 AND SSH-2,1 代表SSH-1,2 代
表SSH-2, 1,2 代表都支持。

允許用戶登錄:認證和訪問控制
1、認證負責對發起連接請求的用戶的身份進行驗證。
密碼認證
PasswordAuthentication yes AllowedAuthentications password (ssh2)
公鑰認證
RSAAuthentication yes (ssh1,openssh/1)
AllowedAuthentications publickey (ssh2)
DEAAuthentication yes (openssh/2)
Rhosts認證,可信主機認證通過檢查遠程主機名和相關用戶名來實現對客戶端的身份認證。
RhostsAuthentication yes (ssh1,openssh)
IgnoreRhosts yes (ssh1,ssh2,openssh)不使用系統的hosts.equiv and ~/.rhosts,使用SSH專用
的/etc/shosts.equiv and ~/.shosts
強可信主機認證。
RhostsRSAAuthentication yes ssh1,openssh
AllowedAuthentications hostbased ssh2
提取已知名主機的公鑰
UserKnownHosts no ssh2
IgnoreUserKnownHosts yes openssh
PGP認證
Kerberos認證
S/key認證
SecurID認證
PAM認證

2、訪問控制負責允許或禁止來自特定用戶、機器在或INTERNET域的SSH連接到服務器
上。
通常,只要設置正確,任何賬號都可以接收SSH連接,這種訪問權限可以使用服務器關鍵
字AllowUsers and DenyUsers覆蓋。
AllowUsers smith
如果配置文件中單獨出現一個AllowUsers,後面沒有任何內容,就表示禁止所有沒提到的用
戶連接,如果沒有AllowUsers這個關鍵字,則所有用戶都可連接。DenyUsers表示禁止連接。
可用通配符,

可以用組訪問控制AllowGroups DenyGroups

主機名訪問控制
AllowHosts hostname
DenyHosts hostname

超級用戶的訪問控制
sshd對超級用戶專門使用一種特殊的訪問機制,PermiRootLogin來允許或禁止使用SSH來
訪問root賬號。

顯示用戶的歡迎信息
PrintMotd yes/no default is yes

顯示郵件信息
CheckMail yes/no default is yes

空密碼
PermitEmptyPasswords yes/no 如果使用密碼認證,並且有個賬號沒有設定密碼,那麽服務
器就可以拒絕訪問這個賬號

如果系統中存在/etc/nologin,那麽sshd就只允許root用戶登錄,其它都不能登錄。因此,touch
/etc/nologin是把訪問權只授給系統管理員的一種快速方法。這樣並不需要重新配置ssh。也
不需要重啟ssh。

子系統
定義和調用遠程命令的一個抽象層,用戶可以通過在客戶端命令行中給出命令來調用遠程命
令,如:ssh server.examply.com /bin/tar c /home 這個命令調用tar,遠程把/home拷貝到磁帶上。
子系統是服務器機器上預定義的一組遠程命令,這樣就可以方便地執行。在服務器配置文檔
中定義:subsystem backups /bin/tar c /home,要在服務器上運行該命令,可以使用 -s 選項。
ssh -s backups server.example.com。缺省情況下,sshd_config中定義了一個子系統,subsystem
sftp 。不要刪除這個子系統,這是scp2和sftp必須的。

日誌
Fascisl Logging mode 把調試信息打印到系統日誌文件中,可以使用FascistLogging關鍵字
啟用。
調試模式 可以使用-d命令選項啟用
安靜模式 只能輸出嚴重錯誤,而不能輸出 普通日誌,可以使用QuietMode關鍵字或-q
命令行啟用。
openssh中的日誌配置關鍵字是SyslogFacility and LogLevel。SyslogFacility設置syslog的
facility(KERN,DAEMON,USER,AUTH,MAIL等),LogLevel記錄日誌提供的詳細程度,該
值從低到高順序是:QUIET,FATAL,ERROR,INFO,VERBOSE,DEBUG,使用DEBUG會侵犯用
戶的隱私權,這個級別只能用於診斷,而不能用於普通操作。



服務器範圍配置
1、禁用其它訪問方式。
關掉r-命令,方法如下:刪除/etc/hosts.equiv文件,或改為只讀空文件。禁用rshd,rlogind and
rexecd,通過修改inetd.conf文件。
2、/etc/sshd_config配置
HostKey /etc/ssh_host_key
PidFile /etc/sshd.pid
RandomSeed /etc/ssh_random_seed

StrictModes yes 要求用戶保護其與SSH有關的文件及目錄
Umask 0077 保證所有SSHD1創建是文件和目錄都只能由其所有者(SSHD 運行的
UID)讀取

port 22
ListenAddress 0.0.0.0
IdleTimeout 15m 15分鐘空閑超時
KeepAlive yes 客戶機死機時連接將會終止,而不會長期掛起。

LoginGraceTime 30 登錄時成功認證的時限為30秒。

ServerKeyBits 768 服務器密鑰長度
KeyRegenerationInterval 3600 服務器密鑰一小時重新生成一次

PasswordAuthentication no 禁用密碼認證
RhostsAuthentication no 禁用可信主機認證
RhostsRSAAuthentication no 禁用增強可信主機認證
RSAAuthentication yes 啟用公鑰認證

IgnoreRhosts yes 完全禁止SSHD使用.rhosts文件
IgnoreRootRhosts yes

UseLogin no 禁用UseLogin,防止萬一使用了其它登錄程序

AllowHosts xxx 根據需要設置
SilentDeny yes 任何被DenyHosts拒絕的連接都不會向用戶返回消息,不必告訴攻擊
者發生了什麽,可以增加了排錯的難度。

PermitRootLogin nopwd 允許超級用戶通過SSH連接,但不能用密碼認證

FascistLogging no 禁用FascistLogging日誌方式,因為它會在日誌中記錄用戶特定信息,對
攻擊者有用。
QuietMode no 禁用QuietMode日誌方式,使用日誌更詳細,敏感度更低

AllowTcpForwarding yes 允許tcp端口轉發和X轉發,保護其它的tcp連接
X11Forwarding yes

3、/etc/ssh2/sshd2_config配置
HostKeyFile /etc/ssh2/hostkey
PublicHostKeyFile /etc/ssh2/hostkey.pub
RandmoSeedFile /etc/ssh2/random_seed

UserConfigDirectory
IdentityFile
AuthorizstionFile

StrictModes yes

port 22
listenAddress 0.0.0.0
KeepAlive yes
RequireReverseMapping no

LoginGraceTime 30

由於sshd2沒有設置服務器密鑰的位數的關鍵字,用戶得在啟動時使用 -b 選項 $ sshd2 -b
1024 ....

AllowedAuthentications publickey
RequiredAuthentications publickey

IgnoreRhosts yes
UserKnownHosts no 禁用該項可防止用戶給未知主機提供信任權限。

PermitRootLogin nopwd


Ciphers any 不能選none


QuietMode no
VerboseMode yes

Ssh1Compatibility no 禁用SSH-1兼容模式
#Ssh1Path /usr/local/ssh1/sshd1 出於實用原因,也可以啟用此模式,之前要指明ssh1服
務器可執行文件位置

4、每賬號配置
對於SSH1 AND OPENSSH,~/.ssh/authorized_keys中的每一個密鑰都必須用適當的選項進
行限制,from選項限制只能從特定的主機訪問特定的密鑰。例如,假設文件中包含你家那
臺pc(myhome.isp.net)的公鑰,而其它機器根本不可能用那個密鑰來認證,我們就可以明確
限定這一關系:from = "myhome.isp.net" ...key...。還要對適當的密鑰設置空閑超時時間:from
= "myhome.isp.net" ,idle-timeout=5m ...key...。
最後,考慮每一個密鑰是否需要對到達的連接使用端口轉發,代理轉發以及分配tty等,如
果不需要,就可以分別用no-port-forwarding,no-agent-forwarding and no-pty禁用這些特性。

5、密鑰管理
至少創建1024位長的用戶密鑰,並用好的口令對密鑰進行保護。

6、客戶端配置
離開正在運行的ssh客戶端時,一定要用密碼保護。
在客戶端配置文件中啟用某些安全功能,並將其設置為最強
Host *
FallBackToRsh no 禁止使用不安全的r-命令(ssh2)沒有這個問題。
UseRsh no
GatewayPorts no 禁止遠程客戶端連接本地的轉發端口
StrictHostKeyChecking ask 在主機密鑰發生變化時提醒你。請求你的處理意見。
配置“/etc/ssh/ssh_config”文件 
“/etc/ssh/ssh_config”文件是OpenSSH系統範圍的配置文件,允許你通過設置不同的選項
來改變客戶端程序的運行方式。這個文件的每一行包含“關鍵詞-值”的匹配,其中“關鍵
詞”是忽略大小寫的。下面列出來的是最重要的關鍵詞,用man命令查看幫助頁(ssh (1))
可以得到詳細的列表。 

編輯“ssh_config”文件(vi /etc/ssh/ssh_config),添加或改變下面的參數: 

# Site-wide defaults for various options 
Host * 
ForwardAgent no 
ForwardX11 no 
RhostsAuthentication no 
RhostsRSAAuthentication no 
RSAAuthentication yes 
PasswordAuthentication yes 
FallBackToRsh no 
UseRsh no 
BatchMode no 
CheckHostIP yes 
StrictHostKeyChecking no 
IdentityFile ~/.ssh/identity 
Port 22 
Cipher blowfish 
EscapeChar ~ 

下面逐行說明上面的選項設置: 

Host * 
選項“Host”只對能夠匹配後面字串的計算機有效。“*”表示所有的計算機。 

ForwardAgent no 
“ForwardAgent”設置連接是否經過驗證代理(如果存在)轉發給遠程計算機。 

ForwardX11 no 
“ForwardX11”設置X11連接是否被自動重定向到安全的通道和顯示集(DISPLAY set)。 

RhostsAuthentication no 
“RhostsAuthentication”設置是否使用基於rhosts的安全驗證。 

RhostsRSAAuthentication no 
“RhostsRSAAuthentication”設置是否使用用RSA算法的基於rhosts的安全驗證。 

RSAAuthentication yes 
“RSAAuthentication”設置是否使用RSA算法進行安全驗證。 

PasswordAuthentication yes 
“PasswordAuthentication”設置是否使用口令驗證。 

FallBackToRsh no 
“FallBackToRsh”設置如果用ssh連接出現錯誤是否自動使用rsh。 

UseRsh no 
“UseRsh”設置是否在這臺計算機上使用“rlogin/rsh”。 

BatchMode no 
“BatchMode”如果設為“yes”,passphrase/password(交互式輸入口令)的提示將被禁止。
當不能交互式輸入口令的時候,這個選項對腳本文件和批處理任務十分有用。 

CheckHostIP yes 

“CheckHostIP”設置ssh是否查看連接到服務器的主機的IP地址以防止DNS欺騙。建議設
置為“yes”。 

StrictHostKeyChecking no 
“StrictHostKeyChecking”如果設置成“yes”,ssh就不會自動把計算機的密匙加入
“$HOME/.ssh/known_hosts”文件,並且一旦計算機的密匙發生了變化,就拒絕連接。 

IdentityFile ~/.ssh/identity 
“IdentityFile”設置從哪個文件讀取用戶的RSA安全驗證標識。 

Port 22 
“Port”設置連接到遠程主機的端口。 

Cipher blowfish 
“Cipher”設置加密用的密碼。 

EscapeChar ~ 
“EscapeChar”設置escape字符。 

配置“/etc/ssh/sshd_config”文件 
“/etc/ssh/sshd_config”是OpenSSH的配置文件,允許設置選項改變這個daemon的運行。
這個文件的每一行包含“關鍵詞-值”的匹配,其中“關鍵詞”是忽略大小寫的。下面列出
來的是最重要的關鍵詞,用man命令查看幫助頁(sshd (8))可以得到詳細的列表。 

編輯“sshd_config”文件(vi /etc/ssh/sshd_config),加入或改變下面的參數: 

# This is ssh server systemwide configuration file. 
Port 22 
ListenAddress 192.168.1.1 
HostKey /etc/ssh/ssh_host_key 
ServerKeyBits 1024 
LoginGraceTime 600 
KeyRegenerationInterval 3600 
PermitRootLogin no 
IgnoreRhosts yes 
IgnoreUserKnownHosts yes 
StrictModes yes 
X11Forwarding no 
PrintMotd yes 
SyslogFacility AUTH 
LogLevel INFO 
RhostsAuthentication no 
RhostsRSAAuthentication no 
RSAAuthentication yes 
PasswordAuthentication yes 
PermitEmptyPasswords no 
AllowUsers admin 

下面逐行說明上面的選項設置: 

Port 22 
“Port”設置sshd監聽的端口號。 

ListenAddress 192.168.1.1 
“ListenAddress”設置sshd服務器綁定的IP地址。 

HostKey /etc/ssh/ssh_host_key 

“HostKey”設置包含計算機私人密匙的文件。 

ServerKeyBits 1024 
“ServerKeyBits”定義服務器密匙的位數。 

LoginGraceTime 600 
“LoginGraceTime”設置如果用戶不能成功登錄,在切斷連接之前服務器需要等待的時間(以
秒為單位)。 

KeyRegenerationInterval 3600 
“KeyRegenerationInterval”設置在多少秒之後自動重新生成服務器的密匙(如果使用密匙)。
重新生成密匙是為了防止用盜用的密匙解密被截獲的信息。 

PermitRootLogin no 
“PermitRootLogin”設置root能不能用ssh登錄。這個選項一定不要設成“yes”。 

IgnoreRhosts yes 
“IgnoreRhosts”設置驗證的時候是否使用“rhosts”和“shosts”文件。 

IgnoreUserKnownHosts yes 
“IgnoreUserKnownHosts”設置ssh daemon是否在進行RhostsRSAAuthentication安全驗證
的時候忽略用戶的“$HOME/.ssh/known_hosts” 

StrictModes yes 
“StrictModes”設置ssh在接收登錄請求之前是否檢查用戶家目錄和rhosts文件的權限和所
有權。這通常是必要的,因為新手經常會把自己的目錄和文件設成任何人都有寫權限。 

X11Forwarding no 
“X11Forwarding”設置是否允許X11轉發。 

PrintMotd yes 
“PrintMotd”設置sshd是否在用戶登錄的時候顯示“/etc/motd”中的信息。 

SyslogFacility AUTH 
“SyslogFacility”設置在記錄來自sshd的消息的時候,是否給出“facility code”。 

LogLevel INFO 
“LogLevel”設置記錄sshd日誌消息的層次。INFO是一個好的選擇。查看sshd的man幫
助頁,已獲取更多的信息。 

RhostsAuthentication no 
“RhostsAuthentication”設置只用rhosts或“/etc/hosts.equiv”進行安全驗證是否已經足夠了。 

RhostsRSAAuthentication no 
“RhostsRSA”設置是否允許用rhosts或“/etc/hosts.equiv”加上RSA進行安全驗證。 

RSAAuthentication yes 
“RSAAuthentication”設置是否允許只有RSA安全驗證。 

PasswordAuthentication yes 
“PasswordAuthentication”設置是否允許口令驗證。 

PermitEmptyPasswords no 
“PermitEmptyPasswords”設置是否允許用口令為空的帳號登錄。 

AllowUsers admin 
“AllowUsers”的後面可以跟著任意的數量的用戶名的匹配串(patterns)或user@host這樣
的匹配串,這些字符串用空格隔開。主機名可以是DNS名或IP地址。

Linux下SSH中配置說明