如何在PHP中连接中间ssh服务器连接


How to connect Intermediate ssh server connection in PHP

如何通过中间服务器从PHP连接Linux服务器。

本地机器(A) --> 中间服务器(Linux机器)(B) --> Linux机器(C)

我想连接 A->B 然后连接 B->C 系统。我使用了下面的代码。

$connection = ssh2_connect('121.2.3.11', 22); // 
ssh2_auth_pubkey_file($connection, 'username', 'id_dsa.pub', 'id_dsa'); // (B)  system connection
$tunnel = ssh2_tunnel($connection, '121.2.3.12', 12345); // (C) system connection

在这里,在哪里提供C("121.2.3.12")系统的用户名/密码。

您已经从手册中复制并粘贴了示例,而没有明显阅读/理解ssh2_tunnel的作用

您似乎期望ssh2_tunnel创建一个 ssh 连接 - 它没有。它创建一个原始TCP套接字连接,该连接通过现有的ssh连接隧道传输。

您实际上是否有一个 ssh 服务器在端口 12345 上侦听?

虽然有时有充分的理由在 ssh 连接内隧道连接,但这些都是非常不寻常的情况,没有证据表明它们适用于这里。如果它们不适用,那么 ssh 中的 ssh 效率非常低,您应该中继连接。我不确定您将如何做到这一点,因为大多数 ssh 登录会清除缓冲的输入,因此您需要轮询/响应提示。

您向我们展示的代码中没有错误检查。您应该检查每个函数的返回值以检查它们是否成功。