当前位置: 首页 > 知识库问答 >
问题:

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

淳于禄
2023-03-14

我正在尝试通过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个答案

益兴生
2023-03-14
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服务器之间的网络流量通过防火墙,您可以调查它是否因为某种原因阻塞了流量。

 类似资料:
  • 我正在尝试连接到远程主机以发出命令,但在运行代码时收到以下错误消息: SSH:握手失败:SSH:密钥交换没有通用算法;提供的客户端:[curve25519-sha256@libssh.org ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521 difffie-hellman-group14-sha1],提供的服务器:[difffie-h

  • 问题内容: 如何从Java应用程序通过SSH连接到远程MySQL数据库?小代码示例对我有所帮助,对此我将不胜感激。 问题答案: 我的理解是,您想访问在远程计算机上运行的mysql服务器,并通过SSH隧道侦听端口3306。 要使用命令行ssh客户端从本地计算机上的端口1234到远程计算机上的端口3306的隧道,您可以从本地计算机上键入以下命令: 要从Java执行相同的操作,可以使用JSch(SSH2

  • 代理的代码在这里 生成脚本在这里 我在远程计算机上启动应用程序时使用 主机上打开了两个端口6004和6005,如果jconsole是应用程序本地的,我可以通过jconsole连接到应用程序。 然后创建2个ssh隧道 ssh隧道ssh-l 6004:localhost:6004 foo@server ssh隧道ssh-l 6005:localhost:6005 foo@server 现在的问题是我无

  • 我试图使用远程SSH扩展来编辑Debian服务器上的文件。SSH连接已正确建立,但随后我收到一条错误消息: 和日志: 我在其他几个服务器上使用远程ssh连接,从来没有出现过这个错误。我已经测试了从网络上收集的一些东西,但到目前为止没有任何效果。 有人能告诉我问题的原因或可能的解决方案吗?谢谢

  • 我已经在本地Windows 7和远程RHEL 7 VM上安装了JProfiler 10.0.1。 由于格式问题,此处提供了与第3点相关的输出: 一些事实: 我希望监视的远程RHEL JVM与用户“nifi”一起运行 由于我是一个“sudoer”,我使用自己的用户名“ojoqcu”通过SSH(通过Putty)连接到远程VM,然后使用“sudo su”、“su nifi”或简单的“sudo su ni