php - 如何在 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

$tunnel = ssh2_tunnel($connection, '121.2.3.12', 12345); // (C) system connection

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

最佳答案

你有 copied and pasted手册中的示例没有明显阅读/理解 ssh2_tunnel 的作用。

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

你真的有一个监听 12345 端口的 ssh 服务器吗?

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

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

关于php - 如何在 PHP 中连接中间 ssh 服务器连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35792257/

相关文章:

php 文档中的 Javascript/jquery ul/li 动画?

php - 为在线判断提供标准输入值

ruby - 当 stdin 用作 ruby​​ 源时,将参数传递给 ruby​​ 解释器

bash - 如何不通过 ssh 连接命令传递语言环境

javascript - jQuery 验证在公共(public)文件中不起作用

php - (PHP) 获取数组(对象)不同结构的通用代码

php - Symfony sfWidgetFormChoice 对于多个选择(复选框)总是无效

ubuntu - 如何在 Cyber​​Duck 中通过 SFTP 使用 sudo?

linux - Gitosis 不接受主机名中的数字

php - ssh2_auth_pubkey_file 认证总是失败