前言
紀錄前陣子在解決特殊網路環境下,無法對外連線使用GCP上服務(Cloud SQL,Redis...)的痛點,而SSH Tunnel 剛好是其中一個解決方案,透過代理加密的傳輸流量,達到我想要的連線目的。
事前準備
SSH Tunnel顧名思義,第一步你得先安裝SSH套件,但套件總共也只有一件
Ubuntu20.04
sudo apt-get -y update && sudo apt -y install openssh-server
這是指令介紹!!
SSH 要開啟
ssh -NfL [local-listen-port]:[target-ip]:[target-port] user@[proxy-ip] -p [ssh port]
-N = 不啟用shell模式
-f = 在背景執行
-L = Local Tunnel
接下來想透過本機連到cloud SQL,這是範例指令(在本機輸入指令)
ssh -NfL 33066:cloudsql-external-ip:3306 johnson@proxy-ip -p 22
當我連線到 Localhost:33066 會透過 Proxy 的 SSH 轉送到Cloud SQL:3306
- Windows 的話,可以使用mysql workbench驗證
- Linux 就直接 mysql -p 33066 -u mysql-user -p mysql-password
結束SSH Tunnel 方法
ps -ef | grep ssh
kill <ssh tunnel 那條服務的PID>
後記
還有另一種是 SSH Tunnel 模式是 remote 模式,是在target server執行SSH Tunnel 指令,對外開出一個入口。
ssh -NfR [proxy-ip]:[proxy-listen-port]:[target-ip]:[target-port] user@[proxy-ip] -p [ssh port]
連入proxy server + listen port 導向至 target server。