從遠端打開主控台

主控台預設只聽 127.0.0.1:8092,也就是「只有這台主機自己連得到」。這是刻意的:管理介面直接掛在公網上,會變成別人可以慢慢猜的一扇門。

所以在別的電腦上打開它,要先決定走哪一條路。兩條路都不需要把 8092 開在防火牆上。

SSH 通道反向代理
要改設定嗎完全不用要,而且要重新啟動服務
誰連得到只有你,而且要有 SSH 權限任何連得到那個網址的人
要準備什麼一個 SSH 帳號網域、憑證、Apache 或 nginx
適合偶爾看一下、自己一個人用長期多人用、想用手機看
做錯的後果連不上管理介面被公開

⭐ 不確定的話選 SSH 通道。它每一次都要你先證明自己進得了這台主機,所以做錯的結果是「連不上」,不是「被別人連上」。

一、SSH 通道:把遠端的 8092 借到你自己電腦上

這個做法不改主機上的任何東西。它只是在 SSH 連線裡再開一條管道:你在自己電腦上連 127.0.0.1:8092,封包從 SSH 走過去,再從主機自己的 127.0.0.1 進主控台——對主控台來說,這就是一個本機連線。

Linux / macOS / Windows 內建的 ssh

ssh -L 8092:127.0.0.1:8092 你的帳號@你的主機位址

這個視窗保持開著,然後在瀏覽器打開:

http://127.0.0.1:8092

關掉視窗,通道就沒了。這正是它安全的地方:沒有東西被留下來。

本機的 8092 已經被占用

換左邊那個數字就好,右邊不要動——右邊是主機上的埠:

ssh -L 18092:127.0.0.1:8092 你的帳號@你的主機位址

然後開 http://127.0.0.1:18092。

PuTTY

連線之前,左邊選 Connection → SSH → Tunnels:

沒有按 Add 的話設定不會生效,這是最常見的一個漏掉。

⚠️ Synology DSM 上不一樣。套件裝好時寫的是 listen_addr = 0.0.0.0:8092——因為套件中心的「開啟」鈕要連得到它。也就是說 DSM 上的主控台本來就對整個區域網路開著。你在 DSM 上要做的通常不是「打開它」,而是決定要不要把它關小:在主控台系統設定頁的「主控台連線」選「只限本機」,或在主機上執行 svrguard console-listen lan 開放私有網段(拒絕所有來自網際網路的連線;設定頁會印出這台的完整指令)。選「只限本機」之後就只能走 SSH 通道或反向代理進去,而套件中心的「開啟」鈕會失效。

連上去之後看不到登入畫面?

設定檔在哪一個路徑、怎麼改、改完怎麼重新啟動,都在設定那一頁。

二、反向代理:給它一個網址

要長期給好幾個人用、或想用手機看,就把主控台放在你自己的 Apache 或 nginx 後面,由它負責 HTTPS 與存取控制。

主控台這邊要改的只有一件事(甚至可以不改):

[web]
listen_addr = 127.0.0.1:8092   ; 維持只聽本機,讓代理成為唯一入口
base_path = /agent             ; 只有要掛在子路徑時才需要

掛在自己的子網域(https://guard.example.com/)就不要填 base_path。要跟別的東西共用一個網域、掛在 https://example.com/agent 底下,才填。

⚠️ 改完要重新啟動服務,設定檔只在啟動時讀一次。

Apache

<VirtualHost *:443>
    ServerName guard.example.com
    # 憑證設定省略

    # 建議保留,理由在下面「來源位址是怎麼判斷的」
    RequestHeader unset X-Forwarded-For

    ProxyPreserveHost On
    ProxyPass        / http://127.0.0.1:8092/
    ProxyPassReverse / http://127.0.0.1:8092/
</VirtualHost>

掛在子路徑時(設定檔要填 base_path = /agent)改成:

ProxyPass        /agent http://127.0.0.1:8092/agent
ProxyPassReverse /agent http://127.0.0.1:8092/agent

nginx

server {
    listen 443 ssl;
    server_name guard.example.com;
    # 憑證設定省略

    location / {
        proxy_pass http://127.0.0.1:8092;
        proxy_set_header Host              $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        # ⛔ $remote_addr,不是 $proxy_add_x_forwarded_for
        proxy_set_header X-Forwarded-For   $remote_addr;
    }
}

來源位址是怎麼判斷的(以及為什麼代理最好放在同一台主機上)

主控台要講得出「誰登入的」,而它的登入鎖定是按來源位址算的:同一個位址 15 分鐘內錯 10 次就鎖住。所以「你是從哪裡來的」這件事不能讓來的人自己說了算。

它的判斷方式是兩段:

⚠️ 把代理放在另一台機器上,會讓所有人看起來都來自代理。這不會有安全問題——鎖定只會變得更嚴、不會變鬆——但稽核紀錄上每一列都會是代理的位址,而且一個人被鎖住會連帶影響到所有人。要看得到真正的來源,就讓代理跟主控台待在同一台主機上。

上面兩段設定各有一行是建議保留的,它讓標頭乾淨、也讓多層代理時的結果可預期:

另外三件

怎麼確認你沒有不小心把它開出去

在主機上執行:

ss -ltnp | grep 8092

看左邊那個位址:

⭐ 光看設定檔不夠——設定檔寫的是「下次啟動會聽哪裡」,ss 看的是「現在真的聽在哪裡」。改完沒重新啟動,兩者就是不一樣的。

還沒把這台主機接上帳號?

沒有瀏覽器的主機也可以用指令綁定,做法在開始使用那一頁。

用指令綁定 →