标签: ssh-tunnel

使用socks5代理时,使用socks5代理的cURL请求失败,但它可以通过命令行运行

cURL +代理noob在这里,很难过.我无法通过代理从远程安全服务器检索网页.显然,远程开发人员已正确设置了所有内容,以便以下命令行指令正常工作并返回我们要查找的内容:

curl -k --socks5-hostname localhost:xxxx https://hostname/
Run Code Online (Sandbox Code Playgroud)

但是,以下PHP不会回显请求的网页.相反,它回应错误'无法解析主机名':

$proxy = 'localhost:xxxx';
$url = 'https://hostname/';
//$proxyauth = 'user:password';

$ch = curl_init();
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_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_URL, $url);
$curl_scraped_page = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);

if ($error)
    echo $error;
elseif ($curl_scraped_page)
    echo $curl_scraped_page;
Run Code Online (Sandbox Code Playgroud)

如果$ url更改为公共页面(例如Google),请求就会成功,并且每个人都很满意.

如果连接发生任何变化,则连接需要SSH隧道.隧道是开放的并且正常运行,正如命令行请求成功所证明的那样.

这里有什么明显的错过吗?

php proxy curl socks ssh-tunnel

7
推荐指数
1
解决办法
9066
查看次数

在安全连接上使用Redis

我有一个运行Redis服务器的远程Linux机器,在开放端口上进行监听.我想加密流量,但Redis不支持SSH.建议的解决方案是使用SSH隧道,但我对此没有多少经验.

我尝试将RedisClient(ServiceStack.Redis)对象连接到通过SSH(SSH.NET)隧道转发到远程linux盒的本地端口:

static void Main(string[] args)
    {
        using (var client = new SshClient("example.org", "sshuser", "sshpassword"))
        {
            client.Connect();
            var port = new ForwardedPortLocal("localhost", 1234, " example.org ", 1234);
            client.AddForwardedPort(port);
            port.Exception += (sender, e) => Console.WriteLine(e.Exception.ToString());
            port.Start();
            using (var redisClient = new RedisClient("localhost", 1234, "redispassword"))
            {
                var values = redisClient.As<string>();
                const string dansFord = "Dan's Ford Mustang";
                values.Store(dansFord);
                Console.WriteLine("Redis has " + values.GetAll().Count + " entries");
                values.GetAll().ToList().ForEach(Console.WriteLine); 
            }
            Console.ReadLine();
            port.Stop();
            client.Disconnect();
        }
    }
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为RedisClient无法连接到localhost上的不存在的服务器,并且转发似乎不起作用.我的问题是:

  1. 是否可以将SSH.NET的SSH隧道用于RedisClient?
  2. 我只是使用SshClient错了吗?
  3. 有没有更简单的方法来完成与远程Redis服务器的加密连接?

我无法应用任何操作系统级别的调整,因此解决方案应该是纯达4.5.1的.NET.这里发布的解决方案需要一个商业图书馆,而我必须依赖免费的.

谢谢!

.net c# ssh redis ssh-tunnel

7
推荐指数
1
解决办法
1435
查看次数

通过 sshtunel 使用 postgres_fdw

可以使用 postgres_fdw 通过 ssh 隧道连接吗?

该数据库只能从数据库服务器访问,我需要从另一台远程服务器加入。数据库服务器使用 SSH 密钥登录。

如果可以的话请问如何做?

ssh-tunnel postgres-fdw

7
推荐指数
1
解决办法
1052
查看次数

通过ssh隧道进行pgAdmin3备份

我在amazone ec2上运行postgresql服务器.我通过ssh隧道连接pgAdmin3,直接在我的mac的pgAdmin3中配置.我可以查询并查看完整的架构,没有问题.

如果我尝试备份数据库(来自pgAdmin3 GUI),那么我得到(即使连接实际上是打开并正常工作)以下异常:

/Applications/pgAdmin3.app/Contents/SharedSupport/pg_dump --host localhost --port 5432 --username "MY_USERNAME" --role "MY_ROLE" --no-password  --format custom --encoding UTF8 --verbose --file "/Users/XXX/filename" "DATABASENAME"
pg_dump: [archiver (db)] connection to database "DATABASENAME" failed: could not connect to server: Connection refused
	Is the server running on host "localhost" (::1) and accepting
	TCP/IP connections on port 5432?
could not connect to server: Connection refused
	Is the server running on host "localhost" (127.0.0.1) and accepting
	TCP/IP connections on port 5432?

Process ended with Exitcode 1.
Run Code Online (Sandbox Code Playgroud)

知道为什么后台的pg_dump无法通过ssh隧道连接?

postgresql backup ssh-tunnel pgadmin

7
推荐指数
1
解决办法
1528
查看次数

无法使用 sqlcmd 通过 SSH 隧道访问 SQL 数据库

我需要通过跳转盒(Azure VM)从本地计算机连接到 Azure SQL DB。我使用以下命令设置端口转发:

ssh -fN -L 41433:my-db.database.windows.net:1433 me@jump-box
Run Code Online (Sandbox Code Playgroud)

我可以确认隧道已设置,因为在详细模式下我看到了消息

Local connections to LOCALHOST:41433 forwarded to remote address my-db.database.windows.net:1433
Run Code Online (Sandbox Code Playgroud)

现在,当我跑

sqlcmd -S 127.0.0.1,41433 -U username -P password -d db 
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息

Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : [Microsoft][ODBC Driver 13 for SQL Server]
[SQL Server]Cannot open server "127.0.0.1" requested by the login.  The login failed..
Run Code Online (Sandbox Code Playgroud)

我已经确保/etc/ssh/sshd_config有线条GatewayPorts yesAllowTcpForwarding yes

有人可以帮我弄清楚我做错了什么吗?

ssh sqlcmd azure ssh-tunnel azure-sql-database

7
推荐指数
1
解决办法
3476
查看次数

通过 ssh 隧道将 spyder 连接到远程内核

我正在尝试将在 local_machine (macOS) 上运行的 spyder 连接到在计算服务器(集群的计算节点)上运行的远程内核。计算节点不能通过互联网直接访问,我只能通过 login_server 访问集群。

我尝试以下操作:

  1. 在计算服务器上我这样做:

    python -m spyder_kernels.console

要将另一个客户端连接到此内核,请使用:--existing kernel-20351.json

我将此 json 文件复制到 local_machine 上的适当位置。它包含文本:“shell_port”:46540,“iopub_port”:39268,“stdin_port”:40704,“control_port”:42637,“hb_port”:46887,

  1. 我通过 login_server 创建了一个 ssh 隧道。在 local_machine 我做:

ssh -L46540:compute_server:46540 -L39268:compute_server:39268 -L40704:compute_server:40704 -L42637:compute_server:42637 -L46887:compute_server:46887 me@login

  1. 我在 local_machine 上启动 spyder,要求它连接到现有内核,输入 json 文件的名称,选中“这是远程内核”框,输入 me@login_server 作为主机名。我已经设置了登录 login_server 的 ssh 密钥。

连接挂起。如果我在 login_server 上启动 spyder 内核并省略第 2 步,那么它工作正常,但我不能在 login_server 上进行大量计算,我必须在计算服务器上工作。

有任何想法吗?

remote-server ssh-tunnel spyder

7
推荐指数
1
解决办法
1328
查看次数

How Node.js silently crashes without any information?

Application silently dies when it opens a lot of SFTP connections. I use all sorts of process event handlers and the only one triggered is process.on('exit',...

I'm using an npm package for SFTP ssh2-sftp-client which is using ssh2 package underneath.

Here is a minimal reproducible code

const Client = require('ssh2-sftp-client')
const inspect = require('util').inspect

const sftpClient = new Client();

sftpClient.on('error', (err) => {
  console.log('SFTP client emitted ERROR: ' + inspect(err))
})
sftpClient.on('end', () => {
  console.log('SFTP client emitted END')
}) …
Run Code Online (Sandbox Code Playgroud)

javascript sftp asynchronous node.js ssh-tunnel

7
推荐指数
1
解决办法
162
查看次数

通过 SSH 隧道的 DBeaver 连接

使用 DBeaver,我尝试连接到安装了 MariaDB 数据库的 AWS ec2 实例。

我创建了一个新连接:

  • 连接:AWS / Maria DB
  • 服务器主机:localhost(因为我使用 ssh 进行连接)
  • 数据库、用户名和密码:正确的
  • 端口:3306

连接上的 SSH 隧道:

  • 使用 SSH 隧道:选中
  • 主机/IP、端口和用户:按照 AWS 文档的建议
  • 授权:公钥
  • 私钥:文件 .pem(我也用它从命令行通过 ssh 连接)

连接一开始效果很好。几分钟不活动后,如果我打开表,连接就会卡住,我需要无效/重新连接才能获取数据。这个过程有时是由 DBeaver 在 15 秒未获取任何内容后完成的,但有时即使我等待 2 分钟,它也会继续运行,但什么也没有获取。

我的配置中是否缺少某些内容?或者服务器上的一些配置也许..我不知道..

你有遇到过这个问题吗?

ssh amazon-ec2 mariadb ssh-tunnel dbeaver

7
推荐指数
1
解决办法
8246
查看次数

Php-Pdo SSH 隧道

现在我正在创建一个 ssh 隧道,这样我就可以连接到我的远程数据库,但由于某种原因连接仍然拒绝......我的脚本:

try {

    $host = 'remote host';
    $sshuser = 'ssh user';
    $sshpass = 'ssh password';
    $dbuser = 'db user';
    $dbpass = 'db user';
    $dbname = 'db name';

    shell_exec("ssh -p$sshpass ssh -o StrictHostKeyChecking=no -f -L 3307:127.0.0.1:3306 $sshuser@$host");

    $dbh = new PDO('mysql:host=127.0.0.1;port=3307;dbname=' .$dbname. '', $dbuser, $dbpass);

    $sth = $dbh->prepare("SELECT * from table");

    $sth->execute();

    $result = $sth->fetchAll();

    print_r ($result);

    shell_exec("kill $(ssh-pid)");

    $dbh = null;
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
Run Code Online (Sandbox Code Playgroud)

结果我得到:

Error!: SQLSTATE[HY000] …
Run Code Online (Sandbox Code Playgroud)

php database connection pdo ssh-tunnel

6
推荐指数
1
解决办法
6483
查看次数

使用 JSch 从 Java 连接到 SSH 服务器时出现“JSchException:拒绝 HostKey”

我尝试根据说明在 Java 程序中使用 SSH 与 PythonAnywhere 中的 MySQL 库建立连接: https:
//help.pythonanywhere.com/pages/AccessingMySQLFromOutsidePythonAnywhere

不幸的是,我每次都会遇到这个错误,而且我已经没有想法了:

com.jcraft.jsch.JSchException:拒绝主机密钥:ssh.pythonanywhere.com

public static void main(String[] args) {
    Tunnel tunnel = new Tunnel();
    try {
        tunnel.go();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public void go() throws Exception {
    String host = "ssh.pythonanywhere.com";
    String user = "username";
    String password = "password";
    int port = 22;

    int tunnelLocalPort = 9080;
    String tunnelRemoteHost = "username.mysql.pythonanywhere-services.com";
    int tunnelRemotePort = 3306;

    JSch jsch= new JSch();
    Session session = jsch.getSession(user,host,port);
    localUserInfo lui = …
Run Code Online (Sandbox Code Playgroud)

java ssh jsch ssh-tunnel pythonanywhere

6
推荐指数
2
解决办法
1万
查看次数