通過SSH隧道安全連接遠程MySQL數據庫端口的操作方法
最穩(wěn)妥的做法是通過 SSH 隧道將遠程數據庫端口映射到本地,避免直接把 MySQL 端口暴露在公網上,適合運維管理或遠程開發(fā)場景。
先說結論:SSH 隧道能加密傳輸流量并利用 SSH 認證機制,比直接開放 3306 端口更安全。
- 適合:需要遠程管理數據庫但不想開放數據庫端口的場景
- 先準備:確保擁有遠程服務器的 SSH 登錄權限和密鑰
- 驗收:本地客戶端能成功連接映射后的本地端口且數據查詢正常
命令速用版
在本地終端執(zhí)行以下命令,將遠程服務器的 3306 端口映射到本地的 3307 端口:
ssh -L 3307:127.0.0.1:3306 -N -f user@remote_host
其中 user 是遠程服務器登錄用戶,remote_host 是服務器 IP 或域名。完成后,本地連接 127.0.0.1:3307 即等同于連接遠程數據庫。
為什么會這樣
MySQL 默認通信協(xié)議在未配置 SSL 的情況下是明文的,直接暴露 3306 端口容易受到中間人攻擊或暴力破解。SSH 隧道利用已有的 SSH 加密通道轉發(fā)數據,既不需要額外配置數據庫 SSL 證書,又能復用服務器的 SSH 防火墻策略,實現(xiàn)網絡層面的隔離。
分步處理
第一步:確認 SSH 連通性先確保本地能通過 SSH 登錄遠程服務器,建議使用密鑰認證而非密碼,減少被爆破風險。如果尚未配置密鑰,可使用 ssh-keygen 生成并通過 ssh-copy-id 上傳。
第二步:建立隧道執(zhí)行上述速用版命令。參數 -N 表示不執(zhí)行遠程命令,-f 表示后臺運行。如果需要保持連接活躍,可在 SSH 配置中開啟 ServerAliveInterval。
第三步:配置數據庫客戶端在 Navicat、DBeaver 或命令行中,主機填 127.0.0.1,端口填 3307,用戶名和密碼填寫數據庫本身的憑證,而非 SSH 憑證。
怎么驗證是否生效
在本地終端使用 MySQL 客戶端嘗試連接:
mysql -h 127.0.0.1 -P 3307 -u db_user -p
連接成功后,執(zhí)行 SELECT 1; 確認數據交互正常。同時可以在遠程服務器上執(zhí)行 SHOW PROCESSLIST;,能看到來自 localhost 的連接請求,說明隧道轉發(fā)正確。
常見坑
1. 數據庫用戶權限限制MySQL 用戶表中的 host 字段必須允許來自 SSH 服務器本地的連接。通常設置為 localhost 或 127.0.0.1 即可,因為對數據庫而言,連接確實來自服務器本機。如果設置為特定 IP,可能會拒絕連接。
2. 隧道斷開導致連接失效SSH 會話超時會導致隧道關閉。建議在 SSH 配置文件 ~/.ssh/config 中增加?;钤O置,或使用 autossh 工具自動維護隧道連接。
3. 本地端口被占用如果本地 3307 端口已被占用,命令會執(zhí)行失敗??筛鼡Q為其他高位端口,如 33070,并在客戶端相應修改配置。
到此這篇關于通過SSH隧道安全連接遠程MySQL數據庫端口的操作方法的文章就介紹到這了,更多相關ssh隧道安全連接遠程mysql內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
mysql導入sql文件報錯 ERROR 2013 2006 2002
今天在做項目的時候遇到個問題,就是往mysql里導入sql文件的時候總是報ERROR 2013 2006 2002,研究了一番才找到解決辦法,這里記錄下來分享給大家2014-11-11
MySql 5.6.14 Win32位免安裝解壓縮版配置教程
本文給大家介紹mysql 5.6.14 win32 位免安裝解壓縮版配置方法,本文分步驟給大家介紹的非常詳細,具有一定的參考借鑒價值,對mysql5.6.14 免安裝解壓縮版配置方法感興趣的朋友一起看看吧2016-11-11
MySQL實現(xiàn)分詞搜索(FULLTEXT)的方法
這篇文章主要介紹了MySQL實現(xiàn)分詞搜索(FULLTEXT)的方法,包括全文搜索的簡單使用,建表添加FULLTEXT索引使用該技術非常簡單,首先需要有一張表,我建立了一張圖書表并插入了兩條數據,需要的朋友可以參考下2022-10-10

