无法使用 sqlcmd 通过 SSH 隧道访问 SQL 数据库
Unable to reach SQL database through SSH tunnel using sqlcmd
我需要通过跳转框 (Azure VM) 从本地计算机连接到 Azure SQL 数据库。我使用以下命令设置端口转发:
ssh -fN -L 41433:my-db.database.windows.net:1433 me@jump-box
我可以确认隧道已设置,因为在详细模式下我看到了消息
Local connections to LOCALHOST:41433 forwarded to remote address my-db.database.windows.net:1433
现在,当我 运行
sqlcmd -S 127.0.0.1,41433 -U username -P password -d db
我收到以下错误消息
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : [Microsoft][ODBC Driver 13 for SQL Server]
[SQL Server]Cannot open server "127.0.0.1" requested by the login. The login failed..
我已确保 /etc/ssh/sshd_config
包含行 GatewayPorts yes
和 AllowTcpForwarding yes
谁能帮我弄清楚我做错了什么?
Azure 匹配登录过程中发送的服务器名称。因此您的错误 "Cannot open server "127.0.0.1“登录请求。”。
要解决此问题,请尝试将 IP 为 127.0.0.1 的 Azure 主机名添加到 HOSTS 文件,然后将相同的主机名提供给 sqlcmd,以便驱动程序将主机名解析为并连接到隧道入口,然后发送相同的主机名,就好像它没有使用隧道一样。
Azure SQL 数据库需要知道您的用户名用于哪个数据库实例。这通常使用服务器名称完成。如果您指定 127.0.0.1 作为您的服务器名称,Azure 无法识别您的实例。
最好的方法是在登录名中指定实例,例如用户名@我-db.database.windows.net。
sqlcmd -S 127.0.0.1,41433 -U username@yourdb.database.windows.net -P password -d db
这样你就不需要修改你的主机文件,你可以通过相同的隧道同时连接到多个 Azure SQL 数据库实例。我希望这可以帮助您安全地连接到 Azure SQL 数据库。
我需要通过跳转框 (Azure VM) 从本地计算机连接到 Azure SQL 数据库。我使用以下命令设置端口转发:
ssh -fN -L 41433:my-db.database.windows.net:1433 me@jump-box
我可以确认隧道已设置,因为在详细模式下我看到了消息
Local connections to LOCALHOST:41433 forwarded to remote address my-db.database.windows.net:1433
现在,当我 运行
sqlcmd -S 127.0.0.1,41433 -U username -P password -d db
我收到以下错误消息
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : [Microsoft][ODBC Driver 13 for SQL Server]
[SQL Server]Cannot open server "127.0.0.1" requested by the login. The login failed..
我已确保 /etc/ssh/sshd_config
包含行 GatewayPorts yes
和 AllowTcpForwarding yes
谁能帮我弄清楚我做错了什么?
Azure 匹配登录过程中发送的服务器名称。因此您的错误 "Cannot open server "127.0.0.1“登录请求。”。
要解决此问题,请尝试将 IP 为 127.0.0.1 的 Azure 主机名添加到 HOSTS 文件,然后将相同的主机名提供给 sqlcmd,以便驱动程序将主机名解析为并连接到隧道入口,然后发送相同的主机名,就好像它没有使用隧道一样。
Azure SQL 数据库需要知道您的用户名用于哪个数据库实例。这通常使用服务器名称完成。如果您指定 127.0.0.1 作为您的服务器名称,Azure 无法识别您的实例。
最好的方法是在登录名中指定实例,例如用户名@我-db.database.windows.net。
sqlcmd -S 127.0.0.1,41433 -U username@yourdb.database.windows.net -P password -d db
这样你就不需要修改你的主机文件,你可以通过相同的隧道同时连接到多个 Azure SQL 数据库实例。我希望这可以帮助您安全地连接到 Azure SQL 数据库。