Authorized_keysのオプションとsshd_configのオプションの関係は何ですか?

Authorized_keysのオプションとsshd_configのオプションの関係は何ですか?

リモートクライアントの特定のユーザーがサーバー上で特定のコマンドを実行できるように、私のサーバーの1つにSSHデーモンを構成したいと思います。特定の公開鍵で識別される各ユーザーは、自分に固有のコマンドを実行できる必要があります。

通常、これを行うには多くのオプションがあるように見えますが、そのうちの3つは次のとおりです。

  • ForceCommand ...in sshd_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_keyssshd_configauthorized_keyssshd_configsshd_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インタラクティブな使用のため)。

関連情報