0

おそらく最良の言葉の質問ではないかもしれませんが、うまくいけば、それは簡単な問題です。

シナリオは、ボックスAの個人アカウントからボックスBの汎用アカウントへのSSHです。ボックスBで実行されているスクリプトは、ログ記録のために個人アカウント名をキャプチャする必要があります。SSH自体またはシェルによってキャプチャされた情報を介してこれをキャプチャする方法はありますか?Solarisではssh2(Reflections)とKornShell(ksh)を使用しています。

4

2 に答える 2

1

クライアント マシンを完全に制御できる場合は、identd を展開してユーザー名を取得できます。

スクリプトから名前を取得する完全な手順:

  1. プロセス ツリーを上って、sshd を見つける
  2. netstat -p を実行して、リモート IP とポートを見つけます。
  3. ポート 113 でクライアントに接続し、尋ねます。

これをそのまま機能させるには、特権の分離を無効にする必要がある場合があります。ただし、それなしで動作するように変更するのは簡単です。

于 2009-05-20T15:17:19.420 に答える
0
  • リモートのユーザー名を確実に記録することはできません
  • 接続の IP をログに記録できます (SSH_CONNECTION 変数を参照)。
  • ログインプロセスの一部としてリモートユーザー名をログに記録する ssh のエイリアスを使用する標準、またはユーザー名を .ssh/environment ファイルに保存する標準を持つことができます (ただし、環境を設定できるようにするには、ssh/sshd 構成が必要になる場合があります)。変わります)。

    alias sshblah='ssh blah "REMOTEUSER=$USER; bash' (それが機能しないことを除いて、私はその理由を理解しようとはしていません - そして、tcsh などを使用する場合は異なります)。

この方法で環境を渡すことができ、設定できる変数を選択できます。$REMOTE_USER=$USER のように、ユーザーに $USER に代替を設定してもらい、$REMOTE_USER のパススルーを許可する必要があります。そして、彼らが間違って設定したり、設定を忘れたりしていないことを信頼しています (このメカニズムを変更することで、少し煩わしく対処できます)。

ユーザーが誰であるかを伝えるために接続しているクライアントをほとんど信頼する必要があることに注意してください-ユーザー名を偽装するのを難しく/面倒にすることができますが、一般的なログイン/パスワードの代わりにユーザーごとの証明書を使用しない限り、誰が接続したかを確認できません。

于 2009-05-20T15:10:04.567 に答える