提问者:小点点

尝试通过SSH连接到远程数据库时,SSH端口转发失败


我正在尝试通过SSH使用Sequel Pro连接到我的DigitalOcean SSD上的远程MySQL数据库。这是我的设置:

  • 名称:mywebapp
  • MySQL-主机:188.226.150.240
  • 用户:localhost
  • 密码:mysqlpassword
  • 数据库:Rails
  • 端口:3306
  • SSH主机:mywebapp.com
  • SSH用户:root
  • SSH密钥:~/.ssh/id_rsa
  • SSH端口:22

当尝试连接时,我得到:

SSH端口转发失败。

在“读取初始通信数据包”时失去与MySQL服务器的连接,系统错误:0

Used command:  /usr/bin/ssh -v -N -o ControlMaster=no -o ExitOnForwardFailure=yes -o ConnectTimeout=10 -o NumberOfPasswordPrompts=3 -i /Users/tintin/.ssh/id_rsa -o TCPKeepAlive=no -o ServerAliveInterval=60 -o ServerAliveCountMax=1 -p 22 root@mywebapp.com -L 61232/188.226.150.240/3306

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to mywebapp.com [188.226.150.240] port 22.
debug1: fd 3 clearing O_NONBLOCK
debug1: Connection established.
debug1: identity file /Users/tintin/.ssh/id_rsa type 1
debug1: identity file /Users/tintin/.ssh/id_rsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.0p1 Debian-3ubuntu1.2
debug1: match: OpenSSH_6.0p1 Debian-3ubuntu1.2 pat OpenSSH*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 42:f3:30:1b:ff:24:92:17:62:19:13:03:e9:65:0d:42
debug1: Host 'mywebapp.com' is known and matches the RSA host key.
debug1: Found key in /Users/tintin/.ssh/known_hosts:4
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/tintin/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Authentication succeeded (publickey).
Authenticated to mywebapp.com ([188.226.150.240]:22).
debug1: Local connections to LOCALHOST:61482 forwarded to remote address 188.226.150.240:3306
debug1: Local forwarding listening on ::1 port 61482.
debug1: channel 0: new [port listener]
debug1: Local forwarding listening on 127.0.0.1 port 61482.
debug1: channel 1: new [port listener]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: Connection to port 61482 forwarding to 188.226.150.240 port 3306 requested.
debug1: channel 2: new [direct-tcpip]
channel 2: open failed: connect failed: Connection refused
debug1: channel 2: free: direct-tcpip: listening port 61482 for 188.226.150.240 port 3306, connect from 127.0.0.1 port 61484, nchannels 3

(我尽可能地用假数据替换了我的ip地址、用户名和应用程序名。)

我已经多次通过SSH登录到我的服务器,所以我不明白为什么它不能与Sequel Pro一起工作。

我错过了什么?

谢谢你的帮助。


共1个答案

匿名用户

debug1: Connection to port 61482 forwarding to 188.226.150.240 port 3306 requested.
debug1: channel 2: new [direct-tcpip]
channel 2: open failed: connect failed: Connection refused

这表示mywebapp.com上的ssh服务器实例试图连接到188.226.150.240端口3306以便为端口转发提供服务,并得到“连接拒绝”错误。

“Connection Refired”通常表示没有任何东西在该地址和端口上侦听连接。最简单的解释是mysql服务器没有运行,或者它监听的接口和/或端口与您尝试连接的接口和/或端口不同。

您应该登录到188.226.150.240并使用“netstat”查看是否有任何东西正在侦听端口3306。您可能会发现msyql没有运行,或者它只在监听localhost接口,或者类似的东西。

或者,可以将网络设备(如防火墙)设置为在它们决定阻止连接时模拟“连接拒绝”条件。如果ssh服务器和mysql服务器之间的网络流量通过防火墙,您可以调查它是否因为某种原因阻塞了流量。