通过phpseclib登录远程服务器后如何在远程服务器(二级)上执行命令?
How to execute a command on remote server (second level) after logging on a remote server via phpseclib?
我必须从远程服务器登录到服务器。我能够使用 phpseclib 登录到远程服务器。之后我可以从那里登录到下一个服务器,但下一个命令在第一个服务器上执行,而不是第二个服务器。例如:
- 通过 SSH
登录 server1.example.com
- 使用来自服务器 1 的内部脚本登录远程-server.example.com。
- 执行'ls'.
ls returns 来自 server1 而不是远程服务器的输出。
您绝对确定 server1 上的脚本确实登录到远程服务器(并且不会立即注销)吗?我能想到的唯一解释是 "ls" 命令在远程服务器上并不是真正的 运行。如果您共享脚本和确切的命令,那可能有助于解决问题。 (整个交换的 "script" 输出也可能有帮助。)
类似以下内容可能也适合您:
ssh server1.example.com ssh remote-server.example.com ls
根据您的远程命令,您还可以执行以下操作:
ssh server1.example.com "ssh remote-server.example.com ls"
(如果涉及重定向,则可能需要后者,否则可能会被您的本地 shell 解释。)
当您使用 phpseclib 时,它可能会处理上面示例中的第一个 ssh。所以你可能会使用类似的东西:
$ssh->exec("ssh remote-server.example.com ls")
或者如果您在第二步使用 public 密钥身份验证,也许:
$ssh->exec("ssh -i ~/.ssh/keyfile remote-server.example.com ls")
上有一个关于如何使用 ssh 运行 远程命令的快速总结
我必须从远程服务器登录到服务器。我能够使用 phpseclib 登录到远程服务器。之后我可以从那里登录到下一个服务器,但下一个命令在第一个服务器上执行,而不是第二个服务器。例如:
- 通过 SSH 登录 server1.example.com
- 使用来自服务器 1 的内部脚本登录远程-server.example.com。
- 执行'ls'.
ls returns 来自 server1 而不是远程服务器的输出。
您绝对确定 server1 上的脚本确实登录到远程服务器(并且不会立即注销)吗?我能想到的唯一解释是 "ls" 命令在远程服务器上并不是真正的 运行。如果您共享脚本和确切的命令,那可能有助于解决问题。 (整个交换的 "script" 输出也可能有帮助。)
类似以下内容可能也适合您:
ssh server1.example.com ssh remote-server.example.com ls
根据您的远程命令,您还可以执行以下操作:
ssh server1.example.com "ssh remote-server.example.com ls"
(如果涉及重定向,则可能需要后者,否则可能会被您的本地 shell 解释。)
当您使用 phpseclib 时,它可能会处理上面示例中的第一个 ssh。所以你可能会使用类似的东西:
$ssh->exec("ssh remote-server.example.com ls")
或者如果您在第二步使用 public 密钥身份验证,也许:
$ssh->exec("ssh -i ~/.ssh/keyfile remote-server.example.com ls")
上有一个关于如何使用 ssh 运行 远程命令的快速总结