linux系統禁止root用戶通過ssh登錄及ssh的訪問控制
Linux系統默認情況下,是可以通過ssh以root權限登錄的。但出於安全考慮,這樣的權限是不合適的,因為黑客可能通過暴力破解你的root密碼,然後進入你的系統,oh,damn it.....
同樣是出於安全性考慮,我們在日常使用linux系統時,一般是通過普通用戶來進行操作,在某些操作需要root權限時,通過su - 命令,或者sudo命名獲取root權限進行操作,而不是一直以root用戶在系統中橫沖直撞,因為說不定什麼時候你手一抖,就進行了一些危險性的操作。
那麼如何禁止以root通過ssh登錄到系統呢?
是否允許root用戶通過ssh登錄,是通過操作sshd_config配置文件來實現的。當一個ssh連接建立時,操作系統會檢查相關文件的配置信息,從而決定是否接受該連接。
因此,為禁止root用戶通過ssh登錄,我們先找到 /etc/ssh/sshd_config文件,通過編輯器打開該文件。比如,通過vim打開該文件:
# vi /etc/ssh/sshd_config
在文件中找到下面一行文字:
#PermitRootLogin no
去掉該行前面的#號,使其成為下面這樣:
PermitRootLogin no
接下來,在shell中輸入以下命令來重啟ssh服務
# /etc/init.d/sshd restart
接下來你再試圖以root登錄系統時,就會出現“拒絕訪問”的錯誤提示信息:
login as: root
Access denied
[email protected]'s password:
好的,現在我們可以通過普通用戶登入系統,如需要root權限相關的操作,可以通過su -命令切換到root用戶,如下所示:
login as: tecmint
Access denied
[email protected]'s password:
Last login: Tue Oct 16 17:37:56 2012 from 172.16.25.125
[tecmint@tecmint ~]$ su -
Password:
[root@tecmint ~]#
同樣的道理,如果想要運行通過root用戶的ssh登錄,我們只要將開始的改變改回去就行,即將 /etc/ssh/sshd_config文件中的行
PermitRootLogin no
前面加上#,變成如下並保存。
#PermitRootLogin no
再通過以下命令重啟ssh服務
# /etc/init.d/sshd restart
如果你的系統裡用戶眾多,想允許一部分用戶通過ssh登錄,而其他用戶則禁止通過ssh登錄。你可以這樣做:
首先打開文件/etc/ssh/sshd_config
# vi /etc/ssh/sshd_config
然後在文件的末尾加上這樣一行文字,其中tecmint、sheena即為允許通過ssh登錄的用戶。
AllowUsers tecmint sheena