社群/遠端連線的 FreedomBox
有時,一群技術人員會承擔管理使用 FreedomBox 設定的許多社群網路的責任。他們可能無法始終在場以管理或除錯網路問題。在這種情況下,能夠遠端連線到社群網路上的 FreedomBox 伺服器將非常有用。在透過安全外殼連線到 FreedomBox 後,網路管理員可以進一步獲取各種服務和硬體裝置(如 Wi-Fi 接入點)的狀態。很多時候,問題可以透過遠端方式解決。
當 FreedomBox 網路擁有其 ISP 提供的公共 IP 地址時,則可能可以直接連線到 FreedomBox 機器,因為網路將配置為將來自網際網路的所有請求轉發到 FreedomBox 機器。在這種情況下,管理員可以使用安全外殼連線遠端登入或訪問 FreedomBox Web 管理介面。
但是,ISP 可能不會提供公共 IP 地址。在這種情況下,可以使用以下方法從外部連線到社群中的 FreedomBox 例項。
在這種方法中,從 FreedomBox 機器到中間伺服器建立安全外殼 (SSH) 連線。該連線始終保持活動狀態,並在連線斷開時重新連線。這種 SSH 連線有些特殊,因為它允許某人連接回建立連線的機器。
毫不奇怪,此方法需要一個始終線上且可公開訪問的中間伺服器。該伺服器可以在託管提供商或由 FreedomBox 網路管理員管理的另一個網路上配置。
在將用作社群網路上的 FreedomBox 伺服器和管理員機器之間的中介的伺服器上執行以下步驟。
- 為每個正在管理的社群建立一個新使用者。
sudo adduser [community]
提供強密碼。
在為社群提供服務的 FreedomBox 機器上執行以下步驟。必須已經使用 Web 介面在 FreedomBox 初始設定期間建立管理員使用者帳戶,例如admin。使用 Cockpit 或 SSH 以該使用者身份登入終端。
- 為使用者建立 SSH 金鑰。
ssh-keygen
- 將剛剛生成的公鑰新增到中間伺服器的授權金鑰列表中。
ssh-copy-id [community]@[intermediate server]
提供上一節中 [community] 使用者的密碼。
- 建立一個始終保持到中間伺服器的遠端 SSH 隧道開啟的服務。
cat << EOF > /etc/systemd/system/ssh-remote.service [Unit] Description=Remote maintenance SSH tunnel Documentation=man:ssh(1) After=network.target [Service] ExecStart=/usr/bin/ssh -o ExitOnForwardFailure=yes -v [community]@[intermediate server] -C -N -R 4422:localhost:22 Restart=always RestartSec=60s User=admin Group=admin [Install] WantedBy=multi-user.target EOF
Restart=always 確保當命令失敗時,systemd 將自動重新啟動它。RestartSec=60s 使每次重新啟動嘗試之間的間隔至少為 60 秒。它還確保過多的失敗不會導致 systemd 永久停止該程序。上面的埠4422 必須對每個維護到中間機器的隧道的社群都是唯一的。為每個管理的社群分配不同的埠號。
- 重新載入 systemd 以讀取上一步中建立的新服務檔案。
systemctl daemon-reload - 確保服務在每次啟動後自動啟動。
systemctl enable ssh-remote
- 啟動服務或重新啟動機器。
systemctl start ssh-remote
在管理員機器上執行以下步驟。這僅僅是為了簡化登入到 FreedomBox 機器上的過程。
- 透過編輯
~/.ssh/config設定 SSH 配置。Host [community] HostName localhost Port 4422 ProxyJump [community]@[intermediate server] User [admin]
埠號4422 對於每個社群都是不同的,如上一節中分配的那樣。
- 建立並將管理員的 SSH 金鑰複製到中間伺服器和社群的 FreedomBox 伺服器的授權金鑰列表中。
ssh-copy-id [community]@[intermediate-server] ssh-copy-id [admin]@[community]
- 從管理員機器登入
ssh [admin]@[community]
- 要使用 FreedomBox 管理 Web 介面,請開啟到 FreedomBox 機器的 SSH 隧道
ssh -N -L 4443:localhost:443 [admin]@[community]
開啟瀏覽器並訪問以下 URL:https://:4443/plinth。
在這種方法中,將使用 Tor 網路從網際網路連線到 FreedomBox 機器。託管 Tor 洋蔥服務(以前稱為 Tor 隱藏服務)的伺服器不需要具有公共 IP 地址。託管服務的伺服器將啟動到 Tor 網路的連線並註冊自身以提供服務。當客戶端想要連線到該服務時,Tor 網路中的節點將透過其已建立的連線將流量轉發到伺服器機器。這類似於上面的中間伺服器方法,但設定起來要容易得多,因為管理員可以使用 Tor 網路,而不是配置單獨的伺服器充當中間伺服器。
- 以管理員身份登入到 FreedomBox Web 介面。在應用程式中點選Tor。出現提示時安裝 Tor。確保選中啟用 Tor 和啟用隱藏服務。您可以取消選中啟用 Tor 中繼、啟用 Tor 橋接中繼 和透過 Tor 下載軟體包 選項。這些選項無關緊要。提交配置更改。
- 記下洋蔥服務地址。它以.onion 結尾。
在管理員機器上執行以下步驟。以下步驟適用於執行 Debian GNU/Linux 的機器。
- 安裝 Tor。
sudo apt install tor
- 編輯 SSH 配置,以便 Tor 用於連線到伺服器。編輯~/.ssh/config 和以下行。
Host [community]-tor HostName [onion service address].onion ProxyCommand ncat --proxy 127.0.0.1:9050 --proxy-type socks5 %h %p User [admin]
- 將您的 SSH 金鑰複製到遠端伺服器。
ssh-copy-id [admin]@[community]-tor
- 登入到伺服器。
ssh [admin]@[community]-tor
- 要訪問 FreedomBox 的 Web 管理介面,請下載並解壓縮Tor 瀏覽器包。在 Tor 瀏覽器包中使用以下 URL https://[隱藏服務地址].onion/plinth/ 開啟 FreedomBox 管理頁面。