如何使用SSH隧道设置curl

时间:2014-08-02 02:02:25

标签: php curl ssh

我有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 os

谁可以帮助我

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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);
}