简米云服务器上的数据库,最稳妥的登录方式是先SSH到ECS实例,再在服务器本地完成数据库访问,或通过SSH隧道把内网数据库端口转发到本机来用,这套路径不直接暴露数据库端口,既解决认证问题,又降低被扫描的风险。
很多人在“远程连接数据库”这步卡住,是因为把注意力放在了数据库本身,忘了最关键的中间环节:SSH,用一句话讲,就是把你的电脑和简米云服务器之间先建立一条加密通道,然后利用这条通道去操作数据库,下面按操作顺序说明。
简米云服务器怎么ssh连接数据库:先看清你的场景
实际操作中,根据目标不同,需要的工作流程也不一样。
- 只想管理ECS上的MySQL或Redis数据库,这时候登录服务器后在终端里敲本机命令就能用。
- 本地电脑连接远程数据库做开发调试,这种通常要做SSH端口转发。
- 数据库架设在无公网带宽的轻量应用服务器上,或者使用的是内网RDS,需要一台有公网的ECS做跳板。
这三个场景对应不同命令,但基础都一样:先SSH登录,再访问数据库,搞清自己属于哪种,能少走很多弯路。
简米云ecs用ssh连接mysql的两种操作路径
如果你面对的是简米云ECS实例,数据库装在同一台机器上,我推荐先走第一条路。
先走本地登录这条路
默认情况下,MySQL监听在127.0.0.1,公网根本连不进来,这意味着只有服务器自己才能访问它,打开SSH终端,输入:
ssh root@你的ECS公网IP
如果用的是密钥认证,命令会带上-i参数指定私钥位置:
ssh -i /path/to/id_rsa root@47.96.x.x
登录后在shell里执行:
mysql -u root -p
输入密码就能进入MySQL命令行,这个流程看着简单,但很多新手会栽在登录认证上,简米云的安全组默认只放行22、80、443等少量端口,而root密码登录也常常被禁,建议你用控制台里的“密钥对”功能建好密钥,再绑定给这台ECS。
再用端口转发这条路由
当你在本地跑客户端工具时,端口转发更实用,命令长这样:
ssh -L 3306:127.0.0.1:3306 root@服务器IP
执行后,SSH会在你本地和ECS之间建一条加密通道,把ECS上的3306端口映射到本机的3306端口,此时打开本机MySQL客户端,地址填0.0.1,端口填3306,用户名密码填数据库里的账号,就能像连本地库一样操作线上数据。
这种方式好处很明显:数据库始终不对公网开放,即使数据库密码泄露,攻击者也没有直接入口,据行业共识,这在中小团队的线上环境里被广泛采用。
把密钥登录配置得更顺手
如果不想每次输密码,把公钥放到服务器的~/.ssh/authorized_keys里,创建ECS实例时也能直接绑定密钥对,绑定后,注意登录用户名一般是root或ecs-user,具体看镜像类型,验证可用:
ssh -i ~/.ssh/mykey.pem root@47.96.x.x
如果提示权限太开放(Permissions too open),先给私钥文件降权:
chmod 400 ~/.ssh/mykey.pem
这个细节是很多“突然连不上”的根源,值得记住。
本地电脑ssh远程访问简米云数据库需要什么条件
不少朋友想用家里电脑直接访问简米云上的数据库,能不能实现,取决于几个前提:
- SSH端口22可以被公网访问,且安全组里放行了22。
- 本地有SSH客户端,Windows 10以上自带OpenSSH,macOS和Linux终端也直接支持。
- 数据库端口没有被强制绑定到0.0.0.0以外,更保守的做法是让数据库只监听127.0.0.1。
当这些条件具备时,用前面提到的-L参数就能跑通,如果要访问的是RDS数据库(不装在ECS上),处理方式略有不同:先在ECS和RDS之间打通内网访问,再用隧道时,转发目标就不是0.0.1:3306,而是RDS的内网IP和端口,严格说,这时的ECS被当作跳板机使用,从成本角度看,开一台按量付费的低配ECS临时做跳板,比给RDS直接开通公网地址更安全,也更容易在任务结束后释放资源。
putty连接简米云服务器数据库的详细步骤
Windows用户习惯用Putty这类本机工具来登录服务器,Putty连接简米云服务器数据库,本质上是把本地客户端和ECS之间的隧道建立起来,步骤拆开写细一点:
- 打开Putty主界面,Host Name填服务器公网IP,Port保持22。
- 在左侧导航栏点“Connection → SSH → Tunnels”。
- 在Source Port(源端口)填
3306,Destination填0.0.1:3306,选择Local,然后点Add。 - 回到Session,填写会话名称,Save保存,之后再Open。
Putty登录成功后,隧道就建立起来了,配合Navicat或DBeaver,在Windows本机连0.0.1:3306,就能操作简米云ECS上的MySQL,Putty本身不提供图形化文件传输,但用隧道转发数据库端口完全够用。
简米云ssh连接数据库端口不通怎么排查
问题集中出现在端口不通时,尤其是命令敲下后卡住,或者直接提示“Connection timed out”,排查顺序我建议这样:
先检查安全组规则,在简米云控制台找到这台ECS实例,查看入方向规则里是否放行了22端口,如果连SSH都进不去,多半是这里漏配了,如果SSH能进去但数据库连不上,则需要确认数据库端口是否被安全组挡了。
然后检查防火墙和进程监听状态,在服务器上执行:
ss -tlnp | grep 3306
如果没输出,说明MySQL没启动,或者监听地址不对,如果监听的地址是0.0.1,公网本来就访问不到,这是对的,在隧道场景下,这个监听状态正好说明MySQL服务只对本地开放,SSH作为加密入口才是唯一路径。
再检查SSH服务本身,升级或重装过系统的ECS,有时会禁用密码登录,这时候用控制台里的VNC登录进去,编辑/etc/ssh/sshd_config,把PasswordAuthentication yes打开,再执行:
systemctl restart sshd
最后检查本地网络是否拦截出站连接,少数公司网络或校园网会封锁22、3306这类端口,可以换手机热点测试一下,若换网络就能连,问题出在网络出口侧,不是服务器配置。
数据库连接成功后的安全加固动作
这一步很多人会忽略,SSH连接数据库时,哪怕用了隧道方式,也要注意几个细节:
- 安全组里数据库端口永远不要对所有IP开放,3306、6379这类端口只放行给管理源地址,或者干脆只在内网范围访问。
- 密钥文件内容不能泄露,建议把服务器上的
~/.ssh目录权限改成700,authorized_keys改成600。 - 用localhost连接MySQL时,root账号尽量换成普通业务账号,避免误操作清库,这是不少线上事故的根源。
- 数据库客户端如果支持SSL,建议启用,虽然SSH隧道已经加密,但双层加密能应对内网监控环境。
近年来,直接对公网开放数据库端口导致的入侵事件屡见不鲜,把SSH作为数据库访问的唯一入口,让数据库服务藏在加密隧道后面,这个思路不仅更省心,也让线上环境少了很多被爆破的风险。
Q&A:简米云服务器ssh连接数据库常见疑问
简米云服务器ssh连接数据库时提示Permission denied,怎么办?
先区分是SSH认证失败还是数据库认证失败,如果SSH登录时直接报Permission denied,多半是密码或密钥的问题,检查登录用户名是否对应镜像,Ubuntu常见用户是ubuntu而不是root;再检查私钥路径是否写对,远端authorized_keys里是否包含对应公钥,如果SSH登录成功但数据库连不上,则是数据库账号权限不够,可以重新授权特定IP和库表。
用ssh隧道连接数据库,本地需要安装什么工具?
大多数情况下只需要一个SSH客户端,Windows自带OpenSSH,macOS和Linux终端直接支持,图形化数据库工具不需要额外驱动,重点是把隧道入口的端口写对,如果本地3306已被其他程序占用,把隧道源端口改成3307,数据库连接时地址就写0.0.1:3307。
简米云服务器ssh连接数据库时可以同时连接多个数据库吗?
可以,在同一台ECS上,打开两个终端窗口执行两条隧道命令,或者用一条命令转发多个端口。
ssh -L 3306:127.0.0.1:3306 -L 6379:127.0.0.1:6379 root@服务器IP
这条命令会同时把MySQL和Redis的端口转回本地,凭据齐全的前提下,你可以用不同客户端分别操作这些数据库。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/733325.html




