
私が働いている会社には、特定のタスクを実行するために誰でも SSH 経由で使用できる共有アカウントがあります。現時点では、ユーザーの数が多すぎて、各ユーザーにはシェル エイリアスなどの独自の使いやすさの特典があります。
私がやろうとしているのは、実際にログインしたユーザーに応じて、 を通じてユーザーが異なるシェル設定を行えるようにすることです~/.bash_profile
。たとえば、Jonathan がログインすると、シェルが を追加で実行し~/.Jonathan_profile
、Bob の場合は、シェルが プロファイルをソースするようにします~/.Bob
。
ただし、SSH を使用してログインしたユーザーのリモート マシン上のアカウント名を確認する方法があるかどうかはわかりません。
ヒントがあれば大歓迎です。
答え1
クライアントがどのアカウントを使用しているかはわかりません。クライアントは教えてくれないからです。しかし、次のようなことがあります。できるする:
個別のアカウントを作成し、ユーザーに sudo を使用して共有アカウントへのアクセス権を付与します。これは、最適な監査 (誰が何をしたかが常に記録されます) を提供し、ユーザーが自分のアカウントに任意のユーティリティを配置できる、非常に推奨されるオプションです。ただし、これは最も手間のかかる作業でもあります。
公開鍵認証のみを使用し、そこから次の構文を使用して環境変数を設定します。
environment="END_USER=whoever" ssh-rsa asdfasdfr...
で。次に、で
.ssh/authorized_keys
確認します。当然、ログインに使用する公開キーごとに設定する必要があります。$END_USER
.profile
オプションを使用してクライアントから環境変数を設定するように全員に指示します
SendEnv
(サーバーには対応するAcceptEnv
設定が必要です)。 で再度変数を確認します.profile
。変数からソース IP とポートを取得し
SSH_CONNECTION
、ident
実際のソース ユーザーを取得するために使用します。ただし、identd
これはクライアント上で実行されている必要があり、最近ではめったに実行されていません。これは、あまり役に立たない一方で、潜在的な攻撃者がシステムに関する情報を取得するのに役立つためです。単一アカウント内でより複雑なカスタマイズを行う場合は、カスタム シェル ラッパーを作成し、それを
command
承認キーの属性とともに使用することもできます。これもかなりの作業ですが、別のアカウントを作成しなくても、ほぼすべての制限と監査を実装できます。
注: 公開キーのみを使用し、パスワードを無効にすることをお勧めします。 そうすれば、誰かのアクセスをキャンセルしたい場合、その人のキーを削除するだけで済みます。