簡體   English   中英

無法使用sqlcmd通過SSH隧道訪問SQL數據庫

[英]Unable to reach SQL database through SSH tunnel using sqlcmd

我需要通過跳轉框(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無法知道您的實例。

最好的方法是在登錄名中指定實例,例如username@my-db.database.windows.net。

sqlcmd -S 127.0.0.1,41433 -U username@yourdb.database.windows.net -P password -d db 

這樣,您無需修改​​hosts文件,並且可以使用相同的隧道連接同時連接到多個Azure SQL數據庫實例。 我希望這可以幫助您安全地連接到Azure SQL數據庫。

Azure在登錄過程中發送的服務器名稱上匹配。 因此您的錯誤“無法打開服務器”127.0.0.1“登錄請求。”。

要解決此問題,請嘗試將帶有127.0.0.1 IP的Azure主機名添加到HOSTS文件,然后向sqlcmd提供相同的主機名,以便驅動程序將主機名解析為並連接到隧道入口,然后發送相同的主機名,就好像它沒有使用隧道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM