【问题标题】:How to setup curl using SSH tunner如何使用 SSH 隧道设置 curl
【发布时间】:2014-09-25 06:57:48
【问题描述】:

我有 ssh,我想用于 cURL。

这是我的代码

<?php
$server = '123.456.789.012';
$port = 22;
$user = 'root';
$pass = '123456';
$connection = ssh2_connect($ip, $port, $methods, $callbacks);
if (!$connection) die('Connection failed');
$auth = ssh2_auth_password ($connection, $user, $pass);
$tunnel = ssh2_tunnel($connection, '127.0.0.1', 1080);
if(!$tunnel) die('error');

$url = 'http://dynupdate.no-ip.com/ip.php';
$proxy = '127.0.0.1:1080';
//$proxyauth = 'user:password';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
//curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$curl_scraped_page = curl_exec($ch);
curl_close($ch);

echo "ok ".$curl_scraped_page;
?>

http://pastebin.com/8mtYwX2R

我使用的是 CentOS 操作系统

谁能帮帮我

【问题讨论】:

标签: php curl ssh


【解决方案1】:

libssh2 是一个客户端。要使ssh2_tunnel 以您的代码所期望的方式运行,它必须在 127.0.0.1::1080 上启动服务器。不仅仅是任何服务器,而是 SOCKS5 服务器。

ssh2_tunnel 的使用方法如下:

$tunnel = ssh2_tunnel($connection, '127.0.0.1', 1080);
fputs($tunnel, "GET / HTTP/1.0\r\nHost: www.domain.tld\r\n\r\n");
while (true) {
    echo fgets($tunnel, 1024);
}

【讨论】:

    【解决方案2】:

    Curl 主要用于与网络相关的查询,如果您将其用于 ssh,我不确定 curl 是否会返回任何响应。我正在查看您的代码,似乎您没有做任何事情,只是试图通过 ssh 登录并返回。但是,如果您想在 ssh 登录后运行某些命令,您可以使用 ssh 命令。如果你想复制一些文件,你也可以使用 scp。因此,当您通过 curl 进行 SSH 连接时,请让我确切地知道您想要实现的目标。

    【讨论】:

      猜你喜欢
      • 2021-04-13
      • 2018-02-15
      • 2010-10-03
      • 2014-06-02
      • 1970-01-01
      • 2021-01-25
      • 2014-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多