すべてのユーザーにSSH

すべてのユーザーにSSH

私はコンテナでいくつかのスタンドアロンアプリケーションを実行するプロジェクトを進めています。 SSHを介して特定の人々に特定のコンテナへのアクセスを許可したいと思います。これまで、以下を追加して機能させることができました/etc/ssh/sshd_config

Match User tester
    ForceCommand docker exec -it mycontainer /bin/sh
    AuthorizedKeysFile /opt/tester_keys

testerこれは、ユーザーがホストオペレーティングシステムに存在し、実行権限を持っている限り機能しますdocker execMatch 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サーバーです。

結局私は次のことを好んだ。

  1. nottesterユーザーがサーバーに接続する
  2. 提供された認証アクセスを使用してください。AuthorizedKeysFile
  3. ForceCommandアクセスが許可されると、そのタスクを実行する権限を持つユーザーとして実行されます。container_admin

これを行うことはできますかsshd?それともこの問題を処理するために別の作業が必要ですか?

答え1

SSHサービスには、認証のためにシステムに既知のユーザーアカウントが必要です。交渉できません:ターゲットアカウント〜しなければならないリモートシステムに存在します。あなたの例ではnottester

それでは、要件をもう一度見てみましょう。

  1. ユーザーが nottester でサーバーに接続します。
  2. 提供されているAuthorizedKeysFileを使用してアクセスを確認してください。
  3. アクセス権が付与されると、ForceCommand は Container_admin ユーザーとして実行されます。

クライアント側でnottester接続するユーザーアカウントを指定します。

ssh nottester@remoteserver ...

または、クライアントの~/.ssh/ssh_config構成/基本設定ファイルに次を追加します。

Host remoteserver
    User notttester
    IdentityFile my_privatekey_for_remoteserver_ed25519.key

これにより、ユーザーアカウントを覚える必要がなくなります。

ssh remoteserver

サーバー側では、このユーザーアカウントの接続と強制コマンドを許可するように設定されているようです。

関連情報