首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SSH 隧道安全遠程管理 MySQL:GUI 工具跨網路連線實戰指南

     編輯:MySQL 資料庫相關知識

問題背景

  • MySQL GUI 工具 (MySQL Administrator, Query Browser, Workbench) 需網路連線
  • 安全策略:MySQL 僅監聽 localhost/socket,拒絕遠程連線
  • 直接開放 3306 連接埠極度危險

解決方案:SSH Port Forwarding (端口轉發)

透過 SSH 加密隧道,將本地連接埠轉發至遠端伺服器的 MySQL 連接埠,兼具強認證、加密傳輸、不破壞本地監聽限制。

伺服器端設定

  1. 確認 MySQL 綁定於 loopback 介面 (bind-address = 127.0.0.1)
  2. 重啟 MySQL 服務

客戶端 SSH 設定 (~/.ssh/config)

Host remotesql
    Hostname webserver.domain.com
    User joe
    LocalForward *:13306 localhost:3306
  • *:13306:監聽本地所有介面 13306 埠 (關鍵:非 127.0.0.1,因 GUI 工具可能嘗試 socket 連線)
  • localhost:3306:遠端伺服器視角的 MySQL 服務位址

建立隧道連線

ssh -f -N remotesql
  • -f:背景執行
  • -N:不執行遠端指令,僅轉發

GUI 工具連線設定

  • 主機:me.domain.com (本地主機名稱)
  • 連接埠:13306
  • 使用者/密碼:遠端 MySQL 帳號

命令列驗證

mysql -u root -p -h me.domain.com -P 13306

常見問題排查

進階安全強化

  • SSH 金鑰認證替代密碼
  • 限制 SSH 使用者僅能建立轉發 (ForceCommand、PermitOpen)
  • MySQL 帳號限制來源 user@'127.0.0.1'
  • 定期輪換 SSH 金鑰與 MySQL 密碼

架構優勢總結

  • 零暴露:3306 完全不對外開放
  • 加密傳輸:SSH AES/ChaCha20 加密
  • 強認證:SSH 金鑰 + MySQL 雙重驗證
  • 審計追蹤:SSH 登入日誌記錄所有連線
  • 工具相容:支援所有標準 MySQL 客戶端工具
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
現象原因與解決
Access denied遠端 MySQL 權限表無對應帳號,需授權 user@'localhost' 或 user@'%'
Connection refusedSSH 隧道未建立、MySQL 未啟動、bind-address 錯誤
GUI 工具無法連線嘗試 socket 連線,確認 SSH LocalForward 使用 *:13306 非 127.0.0.1:13306