Openssh

authorized_keys 中的選項和 sshd_config 中的選項之間的關係?

  • January 9, 2020

我想在我的一台伺服器上配置一個 SSH 守護程序,以便遠端客戶端上的某些使用者可以在伺服器上執行某些命令。每個由特定公鑰標識的使用者必須能夠執行特定於他的命令。

一般來說,似乎有很多選擇可以做到這一點,其中三個是:

  • ForceCommand ...in sshd_config:在我的情況下這不夠靈活,因為每個使用者(公鑰)都應該觸發另一個命令。
  • command="..."in authorized_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 nosshd_config. 那麼如果我離開會發生no-x11-forwarding什麼authorized_keys

恕我直言,必須在每個authorized_keys文件中包含所有相關選項有點愚蠢,但我遇到的每個教程再次強調我們應該這樣做。

如果有人能對此有所了解,我將不勝感激。

如果您使用足夠新的 openssh 伺服器(>= 版本7.2),那麼您將restrictauthorized_keys文件中獲得選項:

限制

啟用所有限制,即禁用埠、代理和X11轉發,以及禁用PTY分配和執行 ~/.ssh/rc。如果將來向 文件添加任何限制功能authorized_keys,它們將包含在此集中。

那麼您可以放心,所有可能的限制都適用,並且將來仍然適用。根據需要,您可能必須在之後添加其他啟用參數restrict(例如:pty用於互動使用)。

引用自:https://unix.stackexchange.com/questions/560111