我有一个带有基于密钥的身份验证设置的库存安装Ubuntu 16.04.2
并且工作正常。我还安装了一个未修改的mysql-server 5.7.17
.我似乎无法通过 Sequel Pro ssh 隧道连接到 mysql 服务器。它总是返回以下内容:
无法连接到主机 127.0.0.1,因为通过 SSH 的端口连接被拒绝。 请确保您的 MySQL 主机设置为允许 TCP/IP 连接(无 --skip-networking),并配置为允许来自您正在通过隧道建立的主机的连接。 您可能还想检查端口是否正确以及您是否拥有必要的权限。 检查错误详细信息将显示 SSH 调试日志,该日志可能会提供更多详细信息。 MySQL 说:在“读取初始通信数据包”时失去与 MySQL 服务器的连接,系统错误:0
完整日志:
使用的命令: /usr/bin/ssh -v -N -S none -o ControlMaster=no -o ExitOnForwardFailure=yes -o ConnectTimeout=10 -o NumberOfPasswordPrompts=3 -o TCPKeepAlive=no -o ServerAliveInterval=60 -o ServerAliveCountMax= 1[电子邮件受保护]-L 53471:127.0.0.1:3306 OpenSSH_6.9p1、LibreSSL 2.1.8 debug1:读取配置数据/Users/example/.ssh/config debug1:读取配置数据/etc/ssh/ssh_config debug1: /etc/ssh/ssh_config 第 21 行:应用 * 的选项 debug1:控制套接字“none”不存在 debug1:连接到 xxxx [xxxx] 端口 22。 debug1: fd 3 清除 O_NONBLOCK debug1:连接已建立。 debug1:身份文件 /Users/example/.ssh/id_rsa 类型 1 debug1: key_load_public: 没有这样的文件或目录 debug1:身份文件 /Users/example/.ssh/id_rsa-cert 类型 -1 debug1: key_load_public: 没有这样的文件或目录 debug1:身份文件 /Users/example/.ssh/id_dsa 类型 -1 debug1: key_load_public: 没有这样的文件或目录 debug1:身份文件 /Users/example/.ssh/id_dsa-cert 类型 -1 debug1: key_load_public: 没有这样的文件或目录 debug1:身份文件 /Users/example/.ssh/id_ecdsa 类型 -1 debug1: key_load_public: 没有这样的文件或目录 debug1:身份文件 /Users/example/.ssh/id_ecdsa-cert 类型 -1 debug1: key_load_public: 没有这样的文件或目录 debug1:身份文件 /Users/example/.ssh/id_ed25519 类型 -1 debug1: key_load_public: 没有这样的文件或目录 debug1:身份文件 /Users/example/.ssh/id_ed25519-cert 类型 -1 debug1:启用协议2.0的兼容模式 debug1:本地版本字符串SSH-2.0-OpenSSH_6.9 debug1:远程协议版本2.0,远程软件版本OpenSSH_7.2p2 Ubuntu-4ubuntu2.1 debug1:匹配:OpenSSH_7.2p2 Ubuntu-4ubuntu2.1 pat OpenSSH* 兼容 0x04000000 debug1:以“root”身份验证 xxxx:22 debug1:SSH2_MSG_KEXINIT 已发送 debug1:收到 SSH2_MSG_KEXINIT debug1: kex: 服务器->客户端[电子邮件受保护] 没有任何 debug1: kex: 客户端->服务器[电子邮件受保护] 没有任何 debug1:期待 SSH2_MSG_KEX_ECDH_REPLY debug1:服务器主机密钥:ssh-rsa SHA256:eFHrFt6z4o0mErU0vnzcuzlyIQqZPUa09a0RFl0wE7Q debug1:主机“xxxx”已知并且与 RSA 主机密钥匹配。 debug1:在 /Users/example/.ssh/known_hosts:36 中找到密钥 debug1:SSH2_MSG_NEWKEYS 已发送 debug1:期待 SSH2_MSG_NEWKEYS debug1:收到 SSH2_MSG_NEWKEYS debug1:已发送 SSH2_MSG_SERVICE_REQUEST debug1: 已收到 SSH2_MSG_SERVICE_ACCEPT debug1:可以继续的身份验证:publickey debug1:下一个身份验证方法:publickey debug1:提供RSA公钥:/Users/example/.ssh/id_rsa debug1:服务器接受密钥:pkalg ssh-rsa blen 279 debug1:身份验证成功(公钥)。 已通过 xxxx ([xxxx]:22) 身份验证。 debug1:到 LOCALHOST:53471 的本地连接转发到远程地址 127.0.0.1:3306 debug1:本地转发侦听 ::1 端口 53471。 debug1: 通道 0: 新 [端口侦听器] debug1:本地转发监听127.0.0.1端口53471。 debug1:通道1:新[端口侦听器] debug1:请求[电子邮件受保护] debug1:进入交互会话。 debug1:请求连接到端口 53471 转发到 127.0.0.1 端口 3306。 debug1:通道 2:新 [direct-tcpip] debug1:client_input_global_request:rtype[电子邮件受保护]想要回复 0 通道 2:打开失败:连接失败:连接被拒绝 debug1: 通道 2: free: direct-tcpip: 监听 127.0.0.1 端口 3306 的端口 53471,从 127.0.0.1 端口 53473 连接到 127.0.0.1 端口 53471,nchannels 3
这是我的sshd_config
:
端口22 协议2 主机密钥 /etc/ssh/ssh_host_rsa_key 主机密钥 /etc/ssh/ssh_host_dsa_key 主机密钥 /etc/ssh/ssh_host_ecdsa_key 主机密钥 /etc/ssh/ssh_host_ed25519_key UsePrivilegeSeparation 是 密钥再生间隔 3600 服务器密钥位 1024 系统日志设施验证 日志级别信息 登录宽限时间 120 允许根登录 是 严格模式 是 RSA 身份验证 是 公钥验证 是 忽略主机 是 RhostsRSA 身份验证 否 基于主机的身份验证 否 允许空密码 否 质询响应身份验证 否 密码验证 否 X11转发 是 X11显示偏移 10 打印型号 打印最后日志 是 TCPKeepAlive 是 AcceptEnv LANG LC_* 子系统 sftp /usr/lib/openssh/sftp-server 使用PAM 是 比赛组 mystaff Chroot目录 %h X11转发号 允许Tcp转发 是 ForceCommand 内部 sftp 许可隧道 是 允许Tcp转发 是 许可隧道 是 允许代理转发 是
我知道 sshd_config 中的一些值是多余的,但我已经测试了它的许多变体。这令人沮丧,因为除了禁用密码身份验证之外,此设置完全是普通的。
我需要对防火墙做些什么吗?我不认为有,因为 ssh 已经被允许通过。
更新
有趣的是:我可以从服务器上完全删除 mysql,Sequel Pro 仍然会返回完全相同的错误。我猜这意味着它与 SSH 配置有关。
另外值得注意的是,HeidiSQL 和 Mysql Workbench 上也会返回相同的错误消息。
答案1
X11Forwarding
我对 Sequel Pro 产品不熟悉,但我想知道它是否与set to有关no
。
您是否尝试联系供应商?