2017-05-04 6 views
0

リモートサーバーからサーバーにログインする必要があります。 phpseclibを使用してリモートサーバーにログインできます。その後、私はそれから次のサーバーにログインできますが、次のコマンドは2番目のサーバーではなく、サーバー上で実行されます。たとえば:remote-server.example.comへ phpseclib経由でリモートサーバーにログオンした後、リモートサーバー(2レベル目)でコマンドを実行する方法は?

  • ログインSSH経由server1.example.comへ

    1. ログインすると、server1から内部スクリプトを使用しました。
    2. 'ls'を実行します。

    lsは、server1ではなくremote-serverからの出力を返します。

  • 答えて

    1

    server1のスクリプトが実際にリモートサーバーにログインしている(とすぐにログアウトしない)ことは間違いありませんか?私が考えることができる唯一の説明は、 "ls"コマンドが実際にリモートサーバー上で実行されていないということです。スクリプトと正確なコマンドを共有すると、それを把握するのに役立ちます。 (全体の交流から「スクリプト」の出力も役に立つかもしれません。)以下のような

    何かはまた、あなたのために働くかもしれない:

    ssh server1.example.com ssh remote-server.example.com ls 
    

    リモートコマンドに応じて、あなたはまた、のような何かをするかもしれません。

    ssh server1.example.com "ssh remote-server.example.com ls" 
    

    (存在する場合、後者は、例えば、そうでない場合は、お近くのシェルによって解釈することができることを、関係リダイレクトし、必要になることがあります。)

    として、上記の例の最初のsshを扱うphpseclibを使用します。だから、おそらくのようなものを使用することがあります:

    $ssh->exec("ssh remote-server.example.com ls") 
    

    それとも、多分第二段階のために公開鍵認証を使用している場合:

    $ssh->exec("ssh -i ~/.ssh/keyfile remote-server.example.com ls") 
    

    でのsshでリモートでコマンドを実行する方法の簡単な要約がありますhttps://www.ssh.com/ssh/command/

    +0

    あなたはそれを正しく推測しました。私はリモートサーバにログインしたことはありません - 鍵のパスフレーズの問題です。 :(ありがとう –

    関連する問題