我正在尝试通过 SSH 从我的 Docker 容器连接到数据库。我收到错误
could not connect to server: Connection refused
Is the server running on host "0.0.0.0" and accepting
TCP/IP connections on port 5433?
我有一个打开端口的脚本,它在我的开发 OSX Catalina 上运行良好。
bin/隧道.sh
#!/usr/bin/expect -f
spawn ssh -fNg -L 5432:0.0.0.0:5432 myserver
expect "connecting"
send "yes"
expect "assword:"
send "mypassword\r"
interact
入口点
set -e
if [ -f tmp/pids/server.pid ]; then
rm tmp/pids/server.pid
fi
service cron restart
./bin/tunnel.sh
foreman start -f Procfile.production web
数据库.yml
production: &production
<<: *default
# sslmode: "require"
host: 0.0.0.0
# pool: 100
答案1
编辑
我错误地认为数据库在 docker 容器内运行,这就是我之前的答案不起作用的原因。上面的脚本中的问题在于您将其指定0.0.0.0:5432
为隧道端点。
这不起作用,因为 ssh 客户端需要一个可以连接的真实 ip / 主机名localhost:5432
。如果您的数据库在您正在 ssh 连接的同一台主机上运行,则-L 5432:localhost:5432
应该可以工作。