
我正在實作一個基本的部署腳本,對於 sshd_config,我需要做的唯一更改是將 PermitRootLogin yes 更改為 PermitRootLogin without-password。我已通讀文檔,他們沒有提到這一點,但這並不是說這是不可能的。
我可以指定第二個 PermitRootLogin 嗎?即 echo 'PermitRootLogin without-password' >> /etc/ssh/sshd_config
如果是這樣,這安全嗎?
根據評論更新:
1)我知道我可以解析文件並更改變數。但我的問題仍然存在。
答案1
不。
您可以簡單地透過新增該行並檢查是否可以登入來測試這一點。
原因:OpenSSHservconf.c
有功能
process_server_config_line()
第 1200-2171 行(7.9p1)- 重構為呼叫
process_server_config_line_depth()
第 1260-2371 行(對於 8.3p1)。
所有全域指令僅在啟動時處理,且全域指令僅處理一次。該設定將保持第一次出現時的狀態。
另一方面,兩次使用相同指令可能會導致誤解。
請重新考慮解析該檔案。如果適用,您也可以替換整個文件。
答案2
TL;DR 是的Debian 及其衍生版本支援早期包含檔案。
德班和烏班圖在設定檔中早期有「Include
」指令:ssh
sshd
/etc/ssh/ssh_config:19:Include /etc/ssh/ssh_config.d/*.conf
/etc/ssh/sshd_config:13:Include /etc/ssh/sshd_config.d/*.conf
我同意之前的答案,首先找到的第一個值優先Include
處理目錄檔。
echo PermitRootLogin without-password > /etc/ssh/sshd_config.d/PermitRootLogin.conf
答案3
不,大多數設定只會使用它遇到的第一個值; X11Forwarding 設定是一個很容易測試的設定。話雖這麼說,您也許可以利用每個用戶覆蓋設定來允許相同的操作。這些通常標記在底部,因此可以更好地實現您的附加目標。
話雖這麼說,正如其他人提到的 sed 將是一個更乾淨的解決方案。
sed -i 's/PermitRootLogin yes/PermitRootLogin without-password/g' /etc/ssh/sshd_config