リモートクライアントの特定のユーザーがサーバー上で特定のコマンドを実行できるように、私のサーバーの1つにSSHデーモンを構成したいと思います。特定の公開鍵で識別される各ユーザーは、自分に固有のコマンドを実行できる必要があります。
通常、これを行うには多くのオプションがあるように見えますが、そのうちの3つは次のとおりです。
ForceCommand ...
insshd_config
:各ユーザー(公開鍵)が異なるコマンドを実行する必要があるため、私の場合は柔軟性が不十分です。command="..."
in:各ユーザーはそのサーバーのホームディレクトリに別々のファイルを持っており、各ユーザーが独自の別々のコマンドを実行できるため、authorized_keys
これは私の状況に非常に適しています。authorized_keys
ただし、このアプローチには理解の問題があり、以下で詳しく説明する質問につながります。方法
/usr/lib/restricted-ssh-commands
:この方法はユーザーごとに1つのコマンドを実行するだけですので、私のユースケースには少し過剰です。さらに、この方法で使用される正規表現はセキュリティ上のリスクを引き起こすため、慎重に設計する必要があります。
上記のように、私は2番目のアプローチを選択したいと思います。しかし、私が読んだすべてのチュートリアルでは(例えばこれ)ファイル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
の間の関係が心配されます。
私はこれが私に2つの選択よりも優先されるという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
?
IMHOauthorized_keys
すべてのファイルにすべての関連オプションを含める必要があることは少し愚かですが、私が遭遇したすべてのチュートリアルではこれを行う必要があると強調します。
誰もがこれについて明らかにすることができれば幸いです。
答え1
十分に新しいopensshサーバー(> =バージョン)を使用している場合7.2restrict
)これでオプションが提供されます。authorized_keys
文書:
限界
すべての制限を有効にするこれはポート、プロキシ、およびX11転送を無効にし、PTYの割り当てと実行を無効にします~/.ssh/rc
。もし今後限定機能を追加してください。authorized_keys
セットのファイルに含まれます。
これにより、すべての可能な制限が適用され、今後も引き続き適用されることを確認できます。必要に応じて、後で追加のアクティベーションパラメータを追加する必要がありますrestrict
(たとえば、pty
インタラクティブな使用のため)。