azure - 无法使用 sqlcmd 通过 SSH 隧道访问 SQL 数据库

标签 azure ssh azure-sql-database sqlcmd ssh-tunnel

我需要通过跳线盒(Azure VM)从本地计算机连接到 Azure SQL DB。我使用以下命令设置端口转发:

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 yesAllowTcpForwarding yes

有人可以帮我找出我做错了什么吗?

最佳答案

Azure SQL 数据库需要知道您的用户名适用于哪个数据库实例。这通常是通过服务器名称来完成的。如果指定 127.0.0.1 作为服务器名称,Azure 无法识别您的实例。

最好的方法是在登录名中指定实例,例如[email protected]

sqlcmd -S 127.0.0.1,41433 -U <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="ff8a8c9a8d919e929abf86908a8d9b9dd19b9e8b9e9d9e8c9ad18896919b90888cd1919a8b" rel="noreferrer noopener nofollow">[email protected]</a> -P password -d db 

这样,您无需修改​​主机文件,并且可以通过相同的隧道同时连接到多个 Azure SQL 数据库实例。我希望这可以帮助您安全地连接到 Azure SQL 数据库。

关于azure - 无法使用 sqlcmd 通过 SSH 隧道访问 SQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47092890/

相关文章:

azure - 固定大小的存储桶 - 嵌套 JSON 数组

Eclipse Egit 使用远程系统添加具有 git 支持的项目

azure - 网站贡献者无法根据 Azure RBAC 管理 SSL 证书 : Built-in roles

c# - 无法在 C# Azure 函数中使用 Nuget 包

linux - 如何允许使用 SSH 在主目录外上传文件?

linux - 如何在脚本中一次获取一个单词并在Linux中添加不同的命令

sql-server - 标签索引

powershell - 如何使用 Azure 自动化运行存储过程?

sql - 在 SQL Azure 上的动态 SQL 中创建用户

用于在 WebApp 中列入白名单的 Azure 前门探测 ip