2017-05-04 102 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

    你猜对了,我从来没有登录到远程服务器 - 密钥密码短语问题。 :( 谢谢 –

    相关问题