Mac系统通过堡垒机搭建SSH隧道实现Python连接AWS生产数据库方法咨询
Mac系统SSH隧道连接堡垒机访问AWS MSSQL配置方案
Mac系统自带原生SSH客户端,无需额外安装工具即可实现和Windows下Putty一样的SSH隧道功能,配置步骤如下:
1. 临时隧道配置(测试使用)
直接在终端运行以下命令即可建立端口转发:
ssh -L 14330:mssql-prod.aws.endpoint.com:1433 xum345434@bastion_host.com
- 参数说明:
-L表示本地端口转发,将本地14330端口的流量通过堡垒机转发到目标数据库的1433端口(MSSQL默认服务端口) - 运行命令后输入堡垒机登录密码,保持当前终端窗口不关闭,隧道就持续生效。
2. 持久化隧道配置(适合日常/定时脚本使用)
方法1:命令后台运行
在基础命令上添加-fN参数,运行后隧道直接转入后台,无需保持终端窗口开启:
ssh -fN -L 14330:mssql-prod.aws.endpoint.com:1433 xum345434@bastion_host.com
-f:SSH连接验证通过后转入后台运行-N:不执行远程命令,仅做端口转发
方法2:SSH配置文件固化(推荐)
编辑本地SSH配置文件~/.ssh/config,添加以下配置段:
Host bastion-mssql HostName bastion_host.com User xum345434 LocalForward 14330 mssql-prod.aws.endpoint.com:1433 ServerAliveInterval 60 ServerAliveCountMax 3
后续只要在终端运行ssh -fN bastion-mssql即可启动隧道,配置里的ServerAlive参数会自动发送保活请求,避免隧道因长时间无操作断开。
如果需要免密登录堡垒机,把本地公钥~/.ssh/id_rsa.pub的内容追加到堡垒机的~/.ssh/authorized_keys文件中即可,不需要每次运行都输入密码,适配你每日自动运行Python脚本的场景。
3. 连通性验证
隧道启动后运行以下命令验证端口是否通:
nc -zv localhost 14330
返回succeeded字样即说明隧道配置成功。
4. Python代码调整说明
你现有Python连接代码不需要做任何修改,连接localhost,14330的配置已经匹配上述隧道的端口转发规则,隧道生效后直接运行脚本即可正常访问生产数据库。
如果出现连接失败的情况优先排查以下几点:
- 堡垒机是否有权限访问目标AWS数据库的1433端口
- 本地14330端口是否被其他进程占用,如被占用可换用其他未被占用的端口,同步修改隧道转发配置和Python代码里的端口即可
- 如果堡垒机需要用密钥登录,需要在SSH命令/配置中添加
IdentityFile参数指定私钥路径
内容的提问来源于stack exchange,提问作者26Cocktails
相关产品推荐
相关产品推荐

