在 docker 上通过 SSH 连接数据库失败

在 docker 上通过 SSH 连接数据库失败

我正在尝试通过 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应该可以工作。

相关内容