私はコンテナでいくつかのスタンドアロンアプリケーションを実行するプロジェクトを進めています。 SSHを介して特定の人々に特定のコンテナへのアクセスを許可したいと思います。これまで、以下を追加して機能させることができました/etc/ssh/sshd_config
。
Match User tester
ForceCommand docker exec -it mycontainer /bin/sh
AuthorizedKeysFile /opt/tester_keys
tester
これは、ユーザーがホストオペレーティングシステムに存在し、実行権限を持っている限り機能しますdocker exec
。Match User
ホストOSに存在しないユーザーを入力しても機能しません。
Match User nottester
ForceCommand docker exec -it nottestercontainer /bin/sh
AuthorizedKeysFile /opt/nottester_keys
私が得るログにInvalid user nottester from xxx.xxx.xxx.xxx port 35703
。
sshd
認証されたキーのみを使用して認証する方法はありますか?
ホストオペレーティングシステムはUbuntu 22.04 LTSサーバーです。
結局私は次のことを好んだ。
nottester
ユーザーがサーバーに接続する- 提供された認証アクセスを使用してください。
AuthorizedKeysFile
ForceCommand
アクセスが許可されると、そのタスクを実行する権限を持つユーザーとして実行されます。container_admin
これを行うことはできますかsshd
?それともこの問題を処理するために別の作業が必要ですか?
答え1
SSHサービスには、認証のためにシステムに既知のユーザーアカウントが必要です。交渉できません:ターゲットアカウント〜しなければならないリモートシステムに存在します。あなたの例ではnottester
。
それでは、要件をもう一度見てみましょう。
- ユーザーが nottester でサーバーに接続します。
- 提供されているAuthorizedKeysFileを使用してアクセスを確認してください。
- アクセス権が付与されると、ForceCommand は Container_admin ユーザーとして実行されます。
クライアント側でnottester
接続するユーザーアカウントを指定します。
ssh nottester@remoteserver ...
または、クライアントの~/.ssh/ssh_config
構成/基本設定ファイルに次を追加します。
Host remoteserver
User notttester
IdentityFile my_privatekey_for_remoteserver_ed25519.key
これにより、ユーザーアカウントを覚える必要がなくなります。
ssh remoteserver
サーバー側では、このユーザーアカウントの接続と強制コマンドを許可するように設定されているようです。