Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中连接中间ssh服务器连接_Php_Ssh - Fatal编程技术网

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

如何在PHP中连接中间ssh服务器连接,php,ssh,Php,Ssh,如何通过中间服务器从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 $t

如何通过中间服务器从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_隧道创建ssh连接,但事实并非如此。它创建一个原始TCP套接字连接,该连接通过现有ssh连接进行隧道传输

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

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


您在检查显示给我们的代码时没有错误。您应该检查每个函数的返回值,以检查它们是否成功。

您正在通过pubkey进行身份验证。。您确定它是在请求密码还是密钥的密码短语?您确定您的公钥对该特定服务器的身份验证有效吗?对于第一个系统,我使用了用户名/密码。此外,我还想提供第二系统的用户名/密码祝您好运整理您的问题。您需要的所有内容都在php.net上,请仔细阅读。没有使用用户名/密码连接第二个系统的选项。为了清楚起见,您正在尝试执行类似于
ProxyCommand ssh-q intermediate.example.com nc-q0 remote.example.com
(.ssh/config示例)?这里我只输入了示例代码。为了安全起见,我没有给出原始代码。简单的是我想通过PHP代码连接linux机器C。我能连接B台机器。是否有任何代码示例,请参考。