2017-05-04 116 views
0

我必須從遠程服務器登錄到服務器。我可以使用phpseclib登錄到遠程服務器。之後,我可以登錄到下一臺服務器,但下一個命令在firt服務器上執行,而不是在第二臺服務器上執行。例如:通過SSH 如何通過phpseclib登錄遠程服務器後在遠程服務器(第二級)執行命令?

  • 登錄

    1. 登錄到server1.example.com到remote-server.example.com使用內部腳本在Server1。
    2. 執行'ls'。

    ls從服務器1而非遠程服務器返回輸出。

  • 回答

    1

    您是否確定server1上的腳本實際登錄到遠程服務器(並且不會立即註銷)?我能想到的唯一解釋是「ls」命令並不真正在遠程服務器上運行。如果你分享腳本和確切的命令,這可能有助於弄清楚。 (從整體交換「腳本」的輸出也可能會有所幫助。)

    像下面的內容也可能會爲你工作:

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

    根據您的遠程命令,你也可以這樣做:

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

    (如果有後者可能是必要的,例如,重定向參與,否則會向當地的殼來解釋。)

    由於你使用phpseclib,它可能會處理上面例子中的第一個ssh。所以,你可能或許使用類似:

    $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

    你猜對了,我從來沒有登錄到遠程服務器 - 密鑰密碼短語問題。 :( 謝謝 –