能否使用az ssh创建SSH隧道连接Azure VNet内的PostgreSQL弹性服务器?
使用az ssh创建SSH隧道连接Azure VNet内的PostgreSQL弹性服务器
完全可以通过az ssh命令创建SSH隧道,并且无需管理开发者的SSH密钥——借助Azure AD身份验证就能实现安全访问,具体操作如下:
前提条件
- 堡垒机虚拟机已配置Azure AD SSH登录(确保开发者可通过Azure AD账号登录堡垒机)
- 开发者本地已安装Azure CLI(版本需支持
az ssh隧道功能)和PostgreSQL客户端(如psql) - 堡垒机的网络安全组(NSG)允许来自开发者本地IP的SSH(22端口)流量
- PostgreSQL弹性服务器的防火墙规则已允许堡垒机的私有IP访问
操作步骤
1. 创建SSH隧道
在本地终端执行以下命令,建立本地端口到PostgreSQL服务器的隧道:
az ssh vm \ --resource-group <堡垒机资源组名称> \ --name <堡垒机虚拟机名称> \ --local-port 54320 \ --remote-host <PostgreSQL弹性服务器FQDN> \ --remote-port 5432
参数说明:
--local-port:本地用于转发的端口(可自定义,只要未被占用即可)--remote-host:PostgreSQL弹性服务器的完整域名(如mypgserver.postgres.database.azure.com)--remote-port:PostgreSQL默认端口5432
执行命令后,Azure CLI会自动通过Azure AD完成身份验证,无需输入SSH密钥。
2. 本地连接PostgreSQL
保持隧道终端窗口运行,打开新的本地终端,用psql连接:
psql "host=localhost port=54320 dbname=<数据库名称> user=<PostgreSQL用户名> password=<PostgreSQL密码>"
核心优势
- 无需分发和管理SSH密钥,所有访问权限通过Azure AD统一管控
- 开发者只需使用自己的Azure AD账号即可建立隧道,权限变更直接在Azure AD中调整
- 隧道连接全程加密,符合安全合规要求
注意事项
- 若本地54320端口已被占用,可更换其他未使用的端口(如54321),确保
psql命令中的端口与隧道端口一致 - 堡垒机需保持运行状态,隧道终端窗口关闭后连接会中断
内容的提问来源于stack exchange,提问作者Coulemelle
相关产品推荐
相关产品推荐

