如何在 ssh 隧道上搭建脚手架
How to do a scaffold over a ssh tunnel
我需要使用远程计算机上的 postgres 数据库
要登录那台计算机,我会像往常一样,
ssh <myuser>@<subdomain.domain.com> -p <custom port>
登录后,我必须再次登录
ssh <someServerName>
那我可以
psql -U postgres -W
并进入数据库
所以简而言之,我需要做 ssh something
两次
是否可以使用 entity framework 核心 连接到此数据库 ?
额外问题:这可以称为 ssh 隧道吗?
解决方案
它叫做 Port Fowarding
using (var client = new SshClient("<public ip>", <port>, "<myuser>", "<mypassword>"))
{
client.Connect();
var port = new ForwardedPortLocal("localhost", 5432, "10.0.0.5", 5432);
client.AddForwardedPort(port);
port.Start();
using (var conn = new NpgsqlConnection("Server=localhost;Database=<secret>;Port=5432;User Id=postgres;Password=<secret>;"))
{
conn.Open();
}
port.Stop();
client.Disconnect();
}
假设你想从本地主机 运行 psql 命令,你可以这样做:
ssh -t <myuser>@<subdomain.domain.com> -p <custom port> ssh -t <someServerName> psql -U postgres -W
要进行端口转发(SSH 隧道),您可以在一个终端中进行:
ssh -L 5432:someServerName:5432 <myuser>@<subdomain.domain.com> -p <custom port>
-L 5432:someServerName:5432
表示现在本地主机上的端口 5432 被转发到 someServerName:5432(postgres 使用的端口)
我需要使用远程计算机上的 postgres 数据库
要登录那台计算机,我会像往常一样,
ssh <myuser>@<subdomain.domain.com> -p <custom port>
登录后,我必须再次登录
ssh <someServerName>
那我可以
psql -U postgres -W
并进入数据库
所以简而言之,我需要做 ssh something
两次
是否可以使用 entity framework 核心 连接到此数据库 ?
额外问题:这可以称为 ssh 隧道吗?
解决方案
它叫做 Port Fowarding
using (var client = new SshClient("<public ip>", <port>, "<myuser>", "<mypassword>"))
{
client.Connect();
var port = new ForwardedPortLocal("localhost", 5432, "10.0.0.5", 5432);
client.AddForwardedPort(port);
port.Start();
using (var conn = new NpgsqlConnection("Server=localhost;Database=<secret>;Port=5432;User Id=postgres;Password=<secret>;"))
{
conn.Open();
}
port.Stop();
client.Disconnect();
}
假设你想从本地主机 运行 psql 命令,你可以这样做:
ssh -t <myuser>@<subdomain.domain.com> -p <custom port> ssh -t <someServerName> psql -U postgres -W
要进行端口转发(SSH 隧道),您可以在一个终端中进行:
ssh -L 5432:someServerName:5432 <myuser>@<subdomain.domain.com> -p <custom port>
-L 5432:someServerName:5432
表示现在本地主机上的端口 5432 被转发到 someServerName:5432(postgres 使用的端口)