如何通过SSH隧道实现本地1234端口访问远端MongoDB及命令错误排查
MongoDB SSH隧道连接错误排查
现有命令错误点
- SSH端口指定错误:
-p参数用于指定远端服务器SSH服务的监听端口,默认SSH端口为22,你错误填写了远端MongoDB的服务端口27017,无法完成SSH握手建立隧道。 - SSH登录格式错误:SSH不支持
用户名:密码@主机的直接传密格式,密码不能直接拼接在登录地址中,需通过交互式输入、密钥认证或sshpass工具传入。 - 隐性遗漏:你原有MongoDB服务开启了身份认证,直接执行
mongo localhost:1234没有携带认证参数,即使隧道打通也无法正常登录。
正确操作步骤
1. 建立SSH隧道
替换命令中的ssh登录用户名为你登录远端123.123.123.111服务器的SSH账号,默认SSH端口为22时执行以下命令:
ssh -fN -L 127.0.0.1:1234:127.0.0.1:27017 ssh登录用户名@123.123.123.111
参数说明:
-fN参数代表SSH隧道建立后转入后台运行,不打开远端shell- 如果你自定义了远端SSH端口,在命令末尾添加
-p 你的自定义SSH端口即可 - 如需免交互输入SSH密码,可安装
sshpass后使用命令:sshpass -p '你的SSH密码' ssh -fN -L 127.0.0.1:1234:127.0.0.1:27017 ssh登录用户名@123.123.123.111
2. 本地连接MongoDB
隧道建立成功后,执行以下命令即可连接远端MongoDB服务:
mongo mongodb://user:password@localhost:1234/?authSource=admin
异常排查
如按上述操作仍无法连接,登录远端服务器检查/etc/ssh/sshd_config配置,确认AllowTcpForwarding参数值为yes,修改配置后重启SSH服务即可生效。
内容的提问来源于stack exchange,提问作者misha312
相关产品推荐
相关产品推荐

