2017-07-03 111 views
0

所以我已經設置了「沒有的PermitRootLogin」在/ etc/sshd_config中,我已經重新啓動sshd服務,但root用戶仍然可以通過SSH登錄。的PermitRootLogin沒有在sshd的,但sshd的-t顯示的PermitRootLogin是

進一步的調查表明,運行時配置不同於sshd_config文件:

[[email protected] ~]# grep PermitRootLogin /etc/ssh/sshd_config 
PermitRootLogin no 
[[email protected] ~]# service sshd restart 
Redirecting to /bin/systemctl restart sshd.service 
[[email protected] ~]# sshd -T |grep -i permitrootlogin 
permitrootlogin yes 

我也試圖重新啓動機器,但我依然可以用root登錄...

任何想法?

編輯:我有一些更多的信息。

我發現我必須把一個的PermitRootLogin匹配指令之前,以便它的工作:

# here it works 
PermitRootLogin no 
Match Group sFTP 
    ChrootDirectory /sftp/salsftp 
    ForceCommand internal-sftp 
    AllowTcpForwarding no 

# here it doesn't work 
# PermitRootlogin no 

我找不到一個原因它的行爲是這樣的。

回答

1

阿好,我知道了。從sshd_config手冊頁:

匹配引入一個條件塊。如果所有的 匹配線滿足該準則,在以下行的關鍵字 覆蓋在配置文件中的全局部分設置, ,直到其他匹配行或文件的末尾

所以,如果我把PermitRootlogin比賽結束後,這將被視爲匹配配置的一部分。由於根不是在SFTP組則PermitRootLogin指令被忽略。

+0

這是一件好事,閱讀手冊頁。 – Jakuje