我想使用RazorSQL连接到运行在远程服务器上的数据库。我使用以下命令在本地主机上创建SSH隧道:
ssh -L 1111:remote.server.com:5432 myuser@remote.server.com
我通过RazorSQL的GUI配置连接,指定localhost
作为主机,1111
作为端口。当我点击“连接”时,出现以下错误消息:
ERROR: An error occurred while trying to make a connection to
the database:
JDBC URL: jdbc:postgresql://localhost:1111/myuser
FATAL:
no pg_hba.conf entry for host "aaa.bbb.ccc.ddd",
user "myuser", database "mydatabase", SSL off
其中aaa.bbb.ccc.ddd
是远程服务器的IP地址。
更重要的是,我不允许改变我的pg_hba.conf
文件的内容。这就是目前的情况:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
@remove-line-for-nolocal@# "local" is for Unix domain socket connections only
@remove-line-for-nolocal@local all all @authmethod@
# IPv4 local connections:
host all all 127.0.0.1/32 @authmethod@
# IPv6 local connections:
host all all ::1/128 @authmethod@
是否可以使用我当前的设置通过SSH隧道连接到数据库服务器,而无需修改服务器的配置?
2条答案
按热度按时间sg2wtvxw1#
您的pg_hba.conf似乎允许从localhost连接。使SSH隧道连接从localhost显示的最简单方法是将它们设置为到localhost。
下面的SSH命令remote.example.com以用户“user”的身份连接到www.example.com,并使ssh客户端侦听localhost端口1111/tcp。任何到该端口的连接都将通过ssh隧道转发,在ssh服务器端,连接将被转发到localhost,端口5432/tcp。由于我们正在连接到localhost,所以连接也会显示为来自localhost,并且应该与您现有的pg_hba.conf线路相匹配。
如果这是一个长时间运行的隧道,我建议使用autossh
要在运行ssh客户端的主机上使用psql客户端进行连接,请使用以下命令:
然后,系统将提示您输入数据库用户的密码。
或者,您可以在运行psql的客户端的主目录中添加一个如下行到名为
.pgpass
的文件中:s2j5cfk02#
这里有一个Demo:
打开两个cmd窗口
提示时输入密码
首先
ssh -N -L 1111:127.0.0.1:5432 oracle@10.16.15.13
秒
cd C:\Program Files\PostgreSQL\15\bin
psql -h localhost -p 1111 -U postgres postgres
检查日期和版本
谢谢!