我跳進來了,我又跳出去了 – SSH Tunnel
我跳進來了,我又跳出去了 – SSH Tunnel

我跳進來了,我又跳出去了 – SSH Tunnel

前言

紀錄前陣子在解決特殊網路環境下,無法對外連線使用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。