authorized_keys 中的選項和 sshd_config 中的選項之間的關係?
我想在我的一台伺服器上配置一個 SSH 守護程序,以便遠端客戶端上的某些使用者可以在伺服器上執行某些命令。每個由特定公鑰標識的使用者必須能夠執行特定於他的命令。
一般來說,似乎有很多選擇可以做到這一點,其中三個是:
ForceCommand ...
insshd_config
:在我的情況下這不夠靈活,因為每個使用者(公鑰)都應該觸發另一個命令。command="..."
inauthorized_keys
:這非常適合我的情況,因為每個使用者authorized_keys
在該伺服器上的主目錄中都有一個單獨的文件,因此每個使用者都可以執行自己的單獨命令。但是我對該方法有一個理解問題,這導致我提出下面詳述的問題。- 方法:這個
/usr/lib/restricted-ssh-commands
方法對於我的案例來說有點過大,因為我的每個使用者只需要執行一個命令;此外,與此方法一起使用的正則表達式必須非常仔細地製作,否則它們會帶來安全風險。如上所述,我想選擇第二種方法。然而,在我讀過的每個教程中(很多,例如這個),我們強調我們不僅應該
command=...
在文件中添加選項,還應該添加authorized_keys
更多,如下所示:command="/bin/foo bar baz",no-port-forwarding,no-x11-forwarding,no-agent-forwarding ssh-rsa ...
現在我擔心
/etc/ssh/sshd_config
(我已經配置了對我係統範圍很重要的所有守護程序選項)和authorized_keys
文件中的選項之間的關係。我讀過
man authorized_keys
它給我的印authorized_keys
像是優先於sshd_config
它們中的選項。但是,沒有明確說明(除非我錯過了)不在 中authorized_keys
但在sshd_config
;中的選項會發生什麼。他們會被帶走sshd_config
嗎?舉一個真實的例子:
no-x11-forwarding
是我們可以(並且應該,根據我讀過的所有教程)在authorized_keys
. 但我已經X11Forwarding no
在sshd_config
. 那麼如果我離開會發生no-x11-forwarding
什麼authorized_keys
?恕我直言,必須在每個
authorized_keys
文件中包含所有相關選項有點愚蠢,但我遇到的每個教程再次強調我們應該這樣做。如果有人能對此有所了解,我將不勝感激。
如果您使用足夠新的 openssh 伺服器(>= 版本7.2),那麼您將
restrict
在authorized_keys
文件中獲得選項:限制
啟用所有限制,即禁用埠、代理和X11轉發,以及禁用PTY分配和執行
~/.ssh/rc
。如果將來向 文件添加任何限制功能authorized_keys
,它們將包含在此集中。那麼您可以放心,所有可能的限制都適用,並且將來仍然適用。根據需要,您可能必須在之後添加其他啟用參數
restrict
(例如:pty
用於互動使用)。