您是否确定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/
你猜对了,我从来没有登录到远程服务器 - 密钥密码短语问题。 :( 谢谢 –