使用 PHPSeclib 的 SSH 链接(ssh 机器 1,机器 1-> 机器 2,交互)

SSH chaining using PHPSeclib (ssh machine 1, machine 1->machine2, interact)

我们之前已经提出过这个话题,但很好奇是否有人有关于这个问题的任何新信息。

我们使用多个通过 "management server" 访问的服务器,所以当我们 SSH 登录时,我们必须先登录那里,然后从那里登录我们的目标机器,所以总是至少有 2 个 SSH 连接。我们目前通过使用 : 在管理服务器上使用端口转发,这将把我们直接带到幕后感兴趣的服务器,所以我们认为我们直接通过 ssh 连接到每个服务器。

这里的问题是它需要特定的设置,并且在服务器可以 added/removed 的可扩展环境中,维护很麻烦。理想情况下,我们只能使用 phpseclib 和 运行 命令通过 ssh 连接到多台机器。

有没有人运行对此感兴趣或对脚本级别的解决方案有建议?基本上我们需要通过 ssh 链和 ssh 进入机器 1,然后从机器 1 进入机器 2,然后 运行 commands/interact 进入机器 2。

$ssh = new Net_SSH2('machine1');
$ssh->login('user', 'pass');

$ssh->setTimeout(10);    
$ssh->enablePTY();

$ssh->exec('ssh machine2');
echo $ssh->read();

此时(假设您正在使用 RSA 身份验证并且您的私钥在机器上的 ~/.ssh/id_rsa 文件中)您返回的提示应该是机器 2.

您也可以通过以下方式连接到机器3:

$ssh = new Net_SSH2('machine1');
$ssh->login('user', 'pass');

$ssh->setTimeout(10);
$ssh->enablePTY();

$ssh->exec('ssh machine2');
echo $ssh->read();

$ssh->exec('ssh machine3');
echo $ssh->read();