[英]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 yes
和AllowTcpForwarding 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.