最後更新日期: 2025 年 10 月 04 日

更新內容: 配合 Cloudflare 頁面更新

前言

由於懶懶最近購入號稱 IPv6 Only 永久免費 VPS,正打算使用 SSH 來連接康康這個 VPS 的能耐ಠ_ಠ ,驚覺家中的拉基有線電視網路未提供 IPv6 連線服務,根本連不上 VPS 阿!!!

雖說懶懶目前使用 Cloudflare WARP 來解決沒有 IPv6 連線能力的情況,但總想著是否有更輕鬆的方法可以隨時隨地安全的使用 SSH,經過一番爬文後發現可以使用 Cloudflare Tunnel 配合 Cloudflare Zero Trust 的 Access 原則與應用程式,實現用戶端在僅具備 IPv4 網路連線能力的情況下,通過訪問自訂的網址,直接使用網頁版的 SSH 終端機來訪問 IPv6 Only 的遠端主機。

網頁版的 SSH 終端機展示

關於如何測試你的 IPv6 連線能力

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# 嘗試 ping ipv6.google.com 是否返回 ipv6 的地址
i9@GreenCloud:~$ ping ipv6.google.com
PING ipv6.google.com (2a00:1450:400f:80c::200e) 56 data bytes
64 bytes from arn09s19-in-x0e.1e100.net (2a00:1450:400f:80c::200e): icmp_seq=1 ttl=118 time=7.51 ms
64 bytes from arn09s19-in-x0e.1e100.net (2a00:1450:400f:80c::200e): icmp_seq=2 ttl=118 time=7.45 ms
64 bytes from arn09s19-in-x0e.1e100.net (2a00:1450:400f:80c::200e): icmp_seq=3 ttl=118 time=7.40 ms
64 bytes from arn09s19-in-x0e.1e100.net (2a00:1450:400f:80c::200e): icmp_seq=4 ttl=118 time=7.26 ms
64 bytes from arn09s19-in-x0e.1e100.net (2a00:1450:400f:80c::200e): icmp_seq=5 ttl=118 time=7.27 ms
64 bytes from arn09s19-in-x0e.1e100.net (2a00:1450:400f:80c::200e): icmp_seq=6 ttl=118 time=7.23 ms
c64 bytes from arn09s19-in-x0e.1e100.net (2a00:1450:400f:80c::200e): icmp_seq=7 ttl=118 time=7.57 ms
64 bytes from arn09s19-in-x0e.1e100.net (2a00:1450:400f:80c::200e): icmp_seq=8 ttl=118 time=7.22 ms
^C
--- ipv6.google.com ping statistics ---
8 packets transmitted, 8 received, 0% packet loss, time 7009ms
rtt min/avg/max/mdev = 7.218/7.363/7.574/0.128 ms

# 沒有 IPv6 連線能力的情況
i9@GreenCloud:~$ ping ipv6.google.com
ping: connect: 無法接觸網路

教學

事前準備
  1. Cloudflare 帳戶 (需綁定信用卡)

  2. Top-level Domain 頂級域名 1 個

    • 必須是由 Cloudflare 託管 DNS 的域名
    • 可使用 eu.org 域名
  3. 你的遠端主機

備註:

本篇教學適用 IPv4 onlyIPv6 only 主機

懶懶以自身的 IPv4 only 的主機作為演示

(1). 建立 Cloudflare Tunnel

Cloudflare 官方網站

https://www.cloudflare.com/zh-tw/

關於首次使用 Cloudflare 服務
需要使用 信用卡PayPal 綁定,但使用免費版不會收取任何費用!
  1. 首先登入你的 Cloudflare 帳戶,選擇「左」側邊欄的 Zero Trust 進入 Zero Trust 首頁
  1. 點擊左側的網路折疊選單進入 Tunnels 分頁。
  1. 選擇藍色的建立通道(Create a tunnel)

首次使用需建立 Zero Trust 團隊名稱 並設定相關帳單資訊。

  1. 選擇通道類型 Cloudflared
  1. 建立自訂的通道名稱(tunnel name)名稱,懶懶以名稱「GC_US_01」當作範例,接著點擊儲存通道(Save tunnel)
  1. 懶懶使用的是 Debian 13 系統 (with Docker),Cloudflare 已提供各主流作業系統及 Linux 發行版的安裝命令,依實際狀況使用安裝即可!
使用 Docker 安裝的用戶需注意網路使用場景

下方範例處的 Docker 網路的部分,懶懶加入--net=host參數,直接讓 Docker 容器與宿主機共享網路堆疊,可能帶來潛在風險(僅供範例使用,勿在需要網路隔離的環境使用)。

1
docker run -d --name cloudflared --restart always --net=host cloudflare/cloudflared:latest tunnel run --token **your_token_here**
  1. 如果安裝及連結成功,下方 Connectors 區塊會即時顯示你的連接器(Connector) ID、狀態、版本資訊,顯示「已連線」點擊下一步即可
  1. 接著來建立主機名稱(Public hostname)
  • 子網域(Subdomain)填入自訂域名前綴

    • 如範例圖中的 ssh,作為子域名
  • 網域(Domain)選擇你的域名

    • 如範例圖中的 lann.eu.org,作為域名
  • 路徑(Path)留白即可

註1:

Cloudflare 會自動為該網域新增 DNS record

註2:

關於主機名稱的作用?

網頁版的 SSH 終端機將使用該網址(子網域+網域)作為驗證及登入使用

例如:範例中的網址 ssh.lann.eu.org 就是我們整個設定完成後使用的網址

註:不要懷疑該網址的真實性(派蒙:進不去!怎麼想都進不去吧?!)

  1. 接著下方的服務區塊

    • 類型 (Type) 協議選擇「SSH
    • 「URL」填入「localhost:22
    1
    2
    3
    4
    5
    6
    7
    8
    
    # 關於 SSH 端口
    ## 「22」為連接 SSH 通訊埠的預設值,你可以輸入下列命令查看你的 SSH 設定
    cat /etc/ssh/sshd_config | grep Port
    
    ## 該主機的執行結果(採用預設值 Port 22)
    i9@GreenCloud:~$ cat /etc/ssh/sshd_config | grep Port
    #Port 22 
    #GatewayPorts no
    

最後選擇完成設定

  1. 建立好就可以在通道主頁看到你的 Tunnel 囉!

(2). 建立Cloudflare Access 原則

  1. 點擊左側的Acess折疊選單進入原則分頁。
  1. 選擇藍色的新增原則
  1. 建立自訂的原則名稱名稱,懶懶以名稱「email」當作範例

以受信任的電子郵件信箱,作為接收登入驗證碼的方式

  1. 選取器選擇使用 Emails輸入你的「電子郵件信箱地址」,懶懶以電子郵件地址「test@gmail.com」當作範例
  1. 最後選擇儲存即可
驗證方式
當有使用者訪問ssh.lann.eu.org時,Cloudflare 會向「test@gmail.com」寄出一次性驗證碼,使用者必須至信箱接收並輸入正確的驗證碼後,才能訪問網站!

(3). 建立Cloudflare 應用程式

  1. 點擊左側的 Acess 折疊選單進入應用程式(Appliacations)分頁。
  1. 選擇藍色的加入應用程式(Add an appliacations)建立一個新的應用程式
  1. 選擇自我裝載(Self-hosted)類型
  1. 接著來加入應用程式
  • 應用程式名稱(Application name)

    • 如範例圖中的 ssh
  • 子網域(Subdomain)選擇你的子域名

    • 如範例圖中的 ssh,作為子域名

    請務必核對是否與你建立 Tunnel 時的子域名相同!

  • 域名(Domain)選擇你的域名,範例為lann.eu.org
  1. 打開瀏覽器轉譯設定,將選項設置為 SSH

  2. Access 原則部分選擇選取現有原則

  1. 選取我們方才設定好的 email 原則,並點擊確認
  1. 「應用程式外觀」保持原設定即可
  1. 點擊儲存
  1. 頁面就會出現我們設定好的應用程式

(4). 使用網頁版 SSH 終端機

  1. 訪問你設定的域名地址(如範例中的 ssh.lann.eu.org),並填入你的驗證電子郵件地址
  1. 然後去信箱接收驗證碼,填入驗證碼
  1. 即可進去網頁版 SSH 終端機,需要輸入你的主機使用者名稱及密碼(或私鑰)進行登入
  1. 網頁版 SSH 終端機展示

結語

雖說我們使用 Cloudflare Tunnel 配合 Zero Trust 可以間接使用網頁版的 SSH 終端機,但懶懶仍建議保留原本的 SSH 或 VNC 連線方案作為備援手段!
若不幸碰上 Cloudflare 服務中斷時,而在需要使用主機時,無法連線回主機可就麻煩囉!

警告

懶懶註:

IPv6 Only 永久免費 VPS真的超拉基,極度不建議購買,以上!