2009-05-20 16 views
0

おそらく最高の言葉の質問ではありませんが、うまくいけばそれは簡単な問題です。Box BにSSHした後、Box Aでユーザー名を取得する方法は?

シナリオは、ボックスAの個人アカウントからボックスBの汎用アカウントへのSSHです。ボックスBで実行されているスクリプトは、ログ記録の目的で個人アカウント名を取得する必要があります。これをキャプチャする方法はありますか?SSH自体か、シェルによってキャプチャされた情報のどちらかですか? Solarisではssh2(Reflections)とKornShell(ksh)を使用しています。あなたはログインする彼らは、SSHのエイリアスを使用する標準を持つことができ、あなたは、接続のIPをログに記録することができます

  • 確実にリモートユーザ名をログに記録することはできません

  • 答えて

    0
    • (SSH_CONNECTION変数を参照してください)
    • ログインプロセスの一部としてのリモートユーザ名、またはユーザ名が.ssh /環境ファイルに保存されている場所(ただし、環境を設定できるようにするにはssh/sshdの設定変更が必要な場合があります)。

      別名sshblah =「のssh何とか「REMOTEUSER = $のUSER; bashの」 (それが動作しない、と私は理由を把握しようとしていない場合を除き - あなたはtcshの、などを使用する場合、それは違うだろう) 。

    あなたはthis mannerに渡す環境を使用し、あなたが設定できるようにどの変数を選択することができます。あなたは、ユーザーが$ REMOTE_USER = $ユーザのように、$ユーザにいくつかの代替を設定してもらう必要があるだろう、と$ REMOTE_USERを通過させることができます。また、間違って設定したり、設定するのを忘れたりしています(this mechanismを修正することで、少しでも迷惑をかけて処理できます)。

    ほとんどの場合にはがあり、クライアントの接続を信頼してユーザーの身元を伝えることができます。ユーザー名を偽装するのは難しくなりますが、一般的なログイン/パスワードではなくユーザー単位の証明書を使用しない限り、すべて知っている、あなたは誰が接続しているかを確認することはできませ

    1

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

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

    1. は、リモートIPとポートを見つけるためにsshd
    2. ウォークは、netstat -pを見つけ、プロセスツリーを歩きます。
    3. ポート113でクライアントに接続して尋ねます。

    この機能をそのまま使用するには、特権の分離を無効にする必要があります。それを使用して動作するように変更するのは簡単ではありません。

    関連する問題