通过 php 中的 ssh 连接隧道请求
Posted
技术标签:
【中文标题】通过 php 中的 ssh 连接隧道请求【英文标题】:Tunneling requests via an ssh connection in php 【发布时间】:2012-03-20 02:06:16 【问题描述】:假设在机器 A 上创建到机器 B 的 ssh 隧道,使用例如
ssh -D 9999 user@remote-server-ip-machine-B
在 php 中,如何使用 stream_socket_client() 从机器 A 向机器 C 发出请求,以便通过上述隧道发出这些请求,例如
$socket = stream_socket_client("tls://$ip-machine-C:$port", $errno,$errstr, 60, STREAM_CLIENT_CONNECT, $context);
换句话说,请求必须源自运行在机器 A 上的 php 脚本向机器 C 发出,但对于机器 C,请求必须看起来像是来自机器 B(与机器 C 的连接需要使用tls)。
或者,有没有办法在没有 ssh 隧道的情况下直接在 php 中实现相同的最终结果?对此的任何帮助将不胜感激
【问题讨论】:
对上述问题没有回应,在做了更多研究之后,我现在正试图找到一种方法让 php 通过 socks 代理发出任何外部网络请求,即如果可以的话做对了,然后我可以让 stream_socket_client() 通过 ssh 隧道发出请求。对于这个特定问题的任何帮助也将不胜感激。 【参考方案1】:我发现解决这个问题的最好方法是使用像Open***这样的***(将机器A连接到机器B)或一个非常有用的脚本sshuttle,它是一个透明的代理服务器,可以作为一个穷人男人的***。
【讨论】:
以上是关于通过 php 中的 ssh 连接隧道请求的主要内容,如果未能解决你的问题,请参考以下文章
Spring boot Resttemplate通过ssh隧道的动态代理设置连接不识别远程DNS
通过公共 IP 访问 SSH 隧道 IIS“错误请求 - 无效主机名”