问题如下:
我正在使用 Ubuntu Linux。
我在家工作,需要访问公司网络内的 PostgreSQL 数据库。将该数据库服务器称为 X。出于安全原因,只有一台机器可以通过 ssh 从外部访问,将其称为 Y。
因此场景是:Home <--SSH--> Y <-----> X(DB)
我认为像 SSH 转发(在 .ssh/config 中配置)之类的东西可以帮助解决这个问题,但我不确定如何做到这一点,有什么想法吗?
答案1
解决方案如下: http://www.spencerstirling.com/computergeek/sshtunnel.html
它正在通过网关进行 SSH 隧道转发。对于上述场景,您需要发出以下命令:
ssh -N -L 5555:X:5432 user@Y
其中 X 是用于从 Y 寻址的数据库服务器的名称。5555 只是您家用机器上未使用的某个任意端口,而 5432 是 X 上的 PostgreSQL 数据库服务器正在监听的端口。发出此命令时,系统将要求您输入密码,这是您用于登录 Y 的密码。
PostgreSQL 客户端(以 pgAdmin 为例)配置如下:主机:localhost 端口:5555 用户名:数据库用户名 密码:数据库密码
答案2
你可以使用反向 SSH 隧道来突破公司防火墙。在公司内部执行此操作:
ssh -nNT -R 5000:localmachinename:22 [email protected]
登录后,您可以通过以下方式从家里进行连接:
ssh -p5000 localhost