本指南詳細介紹如何在樹莓派 5上以無顯示屏 (headless) 方式部署 Kali Linux (XFCE 桌面環境),並使用 FRP (Fast Reverse Proxy) 實現遠程訪問。內容涵蓋從準備鏡像、燒錄 TF 卡、系統初始化配置,到安裝常用工具、設置圖形界面和 VNC 服務,以及通過 FRP 進行內網穿透遠程連接的完整步驟。所有操作均針對無屏幕環境設計,並提供清晰的命令行示例(含註釋)和配置文件示例。
涉及工具介紹#
硬件工具清單#
- 樹莓派 5-16G 版
- 樹莓派 5 鋁合金 CNC 超薄外殼 - 帶風扇版(請自行淘寶搜索購買)
- 官方 PD 充電器(Raspberry Pi 5 的性能比 Raspberry Pi 4 更高,使用功率不足的電源可能會遇到問題。故推薦使用高質量的 5V 5A USB-C 電源)
- TF 卡 - U3V30A2(64GB 及以上)
- 讀卡器
軟件工具清單#
- Kali 官方鏡像:https://kali.download/arm-images/kali-2025.2/kali-linux-2025.2-raspberry-pi-arm64.img.xz
- 樹莓派官方啟動盤製作工具:https://downloads.raspberrypi.org/imager/
- VNC 工具:https://www.realvnc.com/en/connect/download/viewer/(筆者個人推薦)
- FRP:https://github.com/fatedier/frp
準備 Kali 樹莓派鏡像與 TF 卡燒錄#
下載鏡像: 前往 Kali Linux 官方網站獲取適用於樹莓派的最新 ARM64 鏡像文件。例如,我們使用 kali-linux-2025.2-raspberry-pi-arm64.img.xz 鏡像,它已包含 XFCE 桌面環境並支持樹莓派 5 硬件。建議使用64GB 或更大容量的高速 microSD TF 卡來容納完整的系統和工具集。下載鏡像後,可驗證其 SHA256 校驗值以確保文件完整無誤。
準備燒錄工具: 安裝 Raspberry Pi 官方提供的鏡像寫入工具 Raspberry Pi Imager(支持 Windows、macOS、Linux)。我們也可以使用 Balena Etcher 等工具或命令行 dd 進行燒錄,但 Raspberry Pi Imager 提供了方便的預配置選項。
燒錄鏡像到 TF 卡:
- 將 TF 卡插入讀卡器並連接電腦。確保備份卡內重要數據或使用全新卡。
- 打開 Raspberry Pi Imager,點擊 “選擇操作系統 (Choose OS)” 按鈕。在列表中找到 “Kali Linux”(在 “Other specific purpose OS” 即可找到)。選擇與樹莓派 5 硬件架構匹配的 64 位 Kali Linux 鏡像。或在 “使用自定義鏡像” 中上傳已下載好的鏡像。
- 點擊 “選擇存儲 (Choose Storage)” 並選擇目標 TF 卡。 (千萬小心檢查這一步驟,不要刷錯哦!!!)
- (可選)預先格式化:如遇到寫入錯誤,可先用 SD Card Formatter 等工具將 TF 卡完整格式化為 FAT32/exFAT 格式 。
在點擊 “寫入” 前,我們可以通過 Raspberry Pi Imager 的高級選項對系統進行預配置,以便實現開機無頭登錄。
使用 Raspberry Pi Imager 寫入鏡像並配置預設選項#
打開高級配置: 在 Raspberry Pi Imager 中,選擇好鏡像和存儲設備後,點擊窗口中的齒輪圖標 (或使用快捷鍵 Ctrl+Shift+X) 打開高級選項菜單。Raspberry Pi Imager 提供了一系列預設配置項,方便我們在燒錄時寫入系統配置 :
- 啟用 SSH: 在 “服務” 中勾選 “Enable SSH”,選擇允許使用密碼驗證登錄。這樣系統首次啟動時將自動開啟 SSH 服務。
- 設置主機名: 在 “Set hostname” 中輸入系統主機名,例如 kali-pi,便於在局域網內通過名稱訪問樹莓派。
- 設置默認用戶名 / 密碼: 填寫默認賬戶(例如用戶名 kali)和密碼(例如 kali)。Kali 默認用戶名 / 密碼即為 kali/kali 。若使用自定義用戶名,注意 Kali 鏡像可能會自動存在 kali 用戶,可保持默認以簡化流程。
- 配置 Wi-Fi: 填寫 Wi-Fi 網絡的 SSID(無線名稱)和密碼,選擇 Wi-Fi 國家 / 地區代碼。國家代碼很重要,需與你的 Wi-Fi 所在地匹配(例如在中國可填 CN)。這將生成 Wi-Fi 配置,以便樹莓派啟動時自動連接無線網絡。
- 區域和本地化: 設置本地語言和鍵盤,鍵盤佈局選擇 “us”(英文),時區選擇 “Asia/Shanghai” 或相應時區。正確的區域設置有助於系統顯示中文並使用正確的鍵盤佈局。
配置完成後,點擊 “保存”,然後點擊 “寫入” 開始燒錄鏡像並應用上述預設選項。
注意: 根據社區經驗,Kali Linux 官方鏡像不完全支持 Raspberry Pi Imager 的自動預配置功能 。這意味著即使在 Imager 中設置了 SSH 和 Wi-Fi,首次啟動後未必生效。為確保無顯示器情況下能夠遠程連接,我們可以採取手動方式輔助配置 SSH 和 Wi-Fi(見下文)。
等待寫入完成: 燒錄過程可能需數分鐘到十幾分鐘。完成後 Imager 會驗證寫入結果。燒錄成功後,先不要急於取出卡,我們還需進行一些手動配置(特別是確保 SSH 啟用和 Wi-Fi 配置正確)。
首次啟動前的手動配置(啟用 SSH 和 Wi-Fi)#
由於 Kali Linux 鏡像在首次啟動時默認關閉 SSH且無法通過 Raspberry Pi Imager 自動配置 Wi-Fi ,建議在插入樹莓派並開機前,執行以下手動配置以確保系統能夠連入網絡並允許 SSH 登錄:
-
掛載分區: 燒錄完成後,電腦上會出現兩個新分區:一個名為 boot 的引導分區(FAT32),另一個是 Linux 根文件系統分區(ext4,Windows 下可能不可見)。我們主要操作 boot 分區,也就是 /boot 分區。
-
啟用 SSH: 在 boot 分區根目錄下創建一個名為 ssh 的空文件(無擴展名)。這會在系統首次引導時觸發 Kali 啟用 SSH 服務 。在 Windows 下可新建一個文本文件並命名為 “ssh”(確保無.txt 後綴)。在 Linux/macOS 下可以執行命令(假設 boot 掛載在 /mnt/boot):
# 在boot分區創建空的ssh文件以啟用SSH sudo touch /mnt/boot/ssh
-
配置 Wi-Fi: 如果需要讓樹莓派通過 Wi-Fi 聯網,在 boot 分區根目錄創建一個 wpa_supplicant.conf 文件,並填入無線網絡配置。文件內容格式如下(請根據實際 Wi-Fi 信息修改):
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=CN # 將CN改為你的國家代碼,如 US, UK 等 network={ ssid="Your_WiFi_SSID" # Wi-Fi 名稱 psk="Your_WiFi_Password" # Wi-Fi 密碼 key_mgmt=WPA-PSK # 加密類型,WPA2 常用 WPA-PSK }
-
將上述內容中的 Your_WiFi_SSID 和 Your_WiFi_Password 替換為實際的無線網絡名稱和密碼。保存時注意確保文件名為 wpa_supplicant.conf(不要有.txt 擴展名)。Kali 在引導時通常會將此配置文件移動到 /etc/wpa_supplicant/ 並用於連接 Wi-Fi。
完成以上步驟後,彈出並取出 TF 卡。將卡插入樹莓派 5,連接電源開機。等待約 1-2 分鐘讓系統完成首次啟動配置。
同時這裡建議,在自己的路由器中,完成 DHCP 靜態 IP 分配。
首次啟動與 SSH 遠程登錄 Kali#
樹莓派加電啟動後,會依據上一步配置嘗試連接 Wi-Fi 並啟用 SSH 服務。接下來,我們需要在另一台電腦上通過 SSH 登錄進樹莓派的 Kali 系統:
-
查找樹莓派 IP 地址: 無顯示屏環境下獲取設備 IP 是首要挑戰。你可以登錄路由器的管理界面查詢新連接的設備(根據主機名 kali-pi 或查看新增的 DHCP 列表),或者使用局域網掃描工具如 nmap 掃描網段以找到開放的 22 端口的主機 。另一個方法是使用 mDNS 主機名(如果網絡支持),嘗試直接 SSH 連接 kali-pi.local(前提是網絡內 DNS 解析或電腦安裝了 Bonjour 服務)。
-
使用 SSH 連接: 在終端或命令提示符執行(將 替換為實際樹莓派 IP 地址):
ssh kali@<IP>
-
如果使用了我們預設的用戶名 / 密碼(或 Kali 默認 kali/kali),會提示輸入密碼進行登錄 。首次連接需接受主機密鑰。
-
更換密碼: 初次登錄後,出於安全考慮請及時修改默認賬戶的密碼:
sudo passwd kali
- 按提示輸入新密碼。
至此,你已經通過 SSH 成功登錄到了樹莓派上的 Kali 系統。接下來可以進行系統配置和軟件安裝。
提示: 如果此時無法 SSH 連接樹莓派,請參考文末常見問題排查章節。常見原因包括 SSH 未成功啟用、Wi-Fi 未連接等,可通過有線網絡連接或重新配置上述文件進行修復。
更換軟件源為國內鏡像 (提高更新速度)#
Kali Linux 默認軟件源在國外伺服器,在國內直接更新可能較慢甚至失敗。我們可以將軟件源切換為國內鏡像源(如清華大學開源鏡像站)以提升速度 。操作步驟:
-
備份源列表: 編輯源列表文件前,建議備份原文件:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
-
編輯 /etc/apt/sources.list: 使用 vim、nano 等編輯器打開該文件,註釋掉原有的官方源行,在文件頂部添加國內源地址。例如添加清華大學的 Kali 鏡像源:
sudo nano /etc/apt/sources.list
# 中科大源、阿里源等亦可使用,這裡以清華TUNA源為例 # 清華大學 Kali 鏡像源 deb https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free non-free-firmware deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free non-free-firmware
-
上述兩行分別指定了二進制軟件包源和源碼源的地址。其中 kali-rolling 是 Kali 的滾動更新分支,包含 main(主)、contrib(貢獻)、non-free(非自由)及 non-free-firmware(非自由固件)組件。確保根據實際需要包含所有組件,以免缺少驅動或工具。
-
更新 APT 密鑰(若有需要): 如果更換源後運行更新出現 公鑰無效 等錯誤,可執行以下命令導入 Kali 官方倉庫公鑰
sudo wget -q -O - https://archive.kali.org/archive-key.asc | sudo apt-key add -
然後重新運行更新命令,修改完成後保存退出編輯器。
更新系統並升級軟件包#
更換源後,首先執行系統更新,確保安裝最新補丁和索引:
# 更新軟件包索引
sudo apt update -y
# 升級已安裝的軟件包
sudo apt -y full-upgrade -y
上述命令將刷新 APT 包列表並應用所有可用升級。 在 Kali (Debian) 中,建議使用 full-upgrade(或 dist-upgrade)以處理可能的依賴變更。過程可能需要一些時間,尤其如果鏡像版本不是最新。耐心等待完成,期間如果遇到提示,可按 Y 確認或 q 跳過查看更詳細信息。
系統升級完畢後,建議重啟一次樹莓派(sudo reboot),以確保內核等更新生效。重啟後重新通過 SSH 登錄繼續後續步驟。
安裝 kali-linux-everything 工具集#
Kali Linux 提供了多個工具集元包,其中 kali-linux-everything 包含了 Kali 下 “幾乎所有” 工具。 在有足夠存儲空間和帶寬的情況下,我們可以一鍵安裝這個工具集,以便在樹莓派上具備完整的滲透測試工具
sudo apt install -y kali-linux-everything
版本名稱 | 簡要說明 | 使用場景 |
---|---|---|
Installer / Default | 標準安裝版,仅含基礎系統和常用滲透測試工具 | 通用滲透測試環境,適合聯網更新 |
Live ISO | 可啟動運行,無需安裝(含 GUI 與部分工具) | 臨時測試、U 盤隨身系統、取證 |
Netinst | 最小化安裝,需聯網拉取組件 | 高度定制化安裝,適合輕量虛擬機或自動部署 |
Large | 包含絕大多數主流 Kali 工具的安裝包 | 滲透測試者常用,部署後幾乎無需額外安裝 |
Everything | 包含 Kali 倉庫中所有工具,安裝鏡像達 20GB+ | 離線環境部署、大型靶場、完全工具鏈準備 |
功能模塊 | Default/Installer | Large | Everything |
---|---|---|---|
kali-linux-default 工具集 | ✅ | ✅ | ✅ |
top10, wireless, web 等分類工具 | ⛔️(手動安裝) | ✅(包含多數) | ✅(全部) |
所有 Kali 元包(metapackage) | ⛔️ | 部分 | ✅ 全部 |
工具總數(粗略估計) | 100–200 | 300–400 | 600+ |
該命令可能下載數 GB 的數據(完整安裝體積可能超過 20GB),請確保網絡穩定且 TF 卡剩余空間充足(安裝 64GB 或更大容量卡的原因所在)。根據網絡速度,此過程可能持續較長時間。安裝過程中 APT 會自動處理依賴關係並配置軟件,如有交互提示,按默認或根據需要選擇。
完成後,樹莓派上的 Kali 將擁有完整的工具集,為各種安全測試做好準備。
配置圖形界面和 VNC 服務 (遠程桌面)#
在無顯示屏情況下,我們仍可能需要使用 Kali 的圖形桌面(XFCE)運行某些工具或獲取完整桌面體驗。為此,我們將配置系統在引導時啟動圖形界面,並通過 VNC 實現遠程桌面訪問。
設置默認啟動進入圖形界面#
Kali Linux 樹莓派鏡像默認可能啟動到文本控制台以節省資源。若希望系統啟動後即進入 XFCE 桌面環境,我們需要調整系統 target 為圖形模式:
# 將系統默認運行級別設置為圖形界面
sudo systemctl set-default graphical.target
執行上述命令後,系統默認將嘗試啟動顯示管理器 (例如 LightDM) 進入圖形界面。由於我們是無頭環境,如果樹莓派未連接顯示器,默認情況下 X 服務器可能無法實際顯示界面。不過我們仍可通過 VNC 來創建虛擬顯示。
注意: 如果樹莓派始終無物理顯示器,graphical.target 雖會啟動桌面服務,但沒有 HDMI 連接時可能不會創建默認 :0 顯示輸出。後續我們通過 VNC 虛擬桌面解決這一問題。如果將來需要連接顯示器進行本地操作,可保持該設置方便直接進入桌面。
安裝 TigerVNC 服務#
TigerVNC 是性能良好的 VNC 服務器實現。我們選擇它來在樹莓派上運行虛擬桌面會話。安裝命令:
sudo apt install -y xfce4 xfce4-goodies tigervnc-standalone-server tigervnc-common autocutsel
- tigervnc-standalone-server 安裝 TigerVNC 服務端程序。
- tigervnc-common 提供相關的常用文件。
- autocutsel 工具用於在 VNC 會話與本地剪貼板之間同步剪貼板(複製 / 粘貼)
安裝完成後,設置 VNC 訪問密碼並初始化配置:
# 切換到普通用戶 (如果當前是 root 登錄,請切回 kali 用戶)
exit # 確保在 kali 用戶下操作
# 設置 VNC 密碼(會提示輸入密碼並確認)
vncpasswd
# 初次啟動 VNC 服務(生成配置文件並創建 VNC 會話 :1)
vncserver :1
首次運行 vncserver :1 時,它會要求設置訪問密碼(長度不超過 8 位),並可選設置 “只讀” 密碼(這裡選擇 n,無需只讀密碼) 。隨後會輸出類似信息,表示啟動了編號:1 的 VNC 桌面(對應 TCP 端口 5901)
因為 VNC 服務啟動在 5900 端口,而我們需要為桌面環境新建一個端口,這裡 1 就是 + 1,即在 5901 端口,如果是 vncserver :2 就是 5902 端口,依次類推。
New 'X' desktop is kali:1
Creating default startup script /home/kali/.vnc/xstartup
Starting applications specified in /home/kali/.vnc/xstartup
Log file is /home/kali/.vnc/kali:1.log
這表示 TigerVNC 已在後台啟動了一個虛擬桌面會話。默認情況下,這個虛擬桌面可能僅有一個灰色背景和 X 終端(或可能因為尚未正確配置而退出)。接下來我們進行配置以啟動 XFCE 桌面環境。
停止剛才啟動的 VNC 會話:
vncserver -kill :1
這將終止會話,以便我們編輯配置文件後重新啟動。
配置 VNC 的 XFCE 桌面會話#
TigerVNC(以及 TightVNC)默認的啟動腳本位於~/.vnc/xstartup,首次運行時已生成。我們需要修改它以啟動 XFCE4 桌面環境,否則 VNC 連接後可能只看到灰色屏幕和 X 光標。編輯文件:
sudo nano ~/.vnc/xstartup
將其中內容替換為以下內容:
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 & # 啟動 XFCE4 桌面會話
autocutsel -fork # 啟動剪貼板同步
上述配置確保每次 VNC 虛擬會話啟動時,清除可能的殘留會話環境變量,然後後台啟動 XFCE4 桌面,並運行 autocutsel 以支持剪貼板共享。 保存文件後退出編輯器。
賦予 xstartup 腳本可執行權限:
sudo chmod +x ~/.vnc/xstartup
注意: xstartup 文件權限必須是可執行,否則 TigerVNC 將忽略它,導致無法啟動 XFCE 桌面
手動測試 VNC 連接#
現在手動啟動 VNC 服務,測試能否通過遠程桌面訪問:
# 再次啟動一個 VNC 會話 :1
vncserver :1 -geometry 1280x800 -depth 24
這裡指定了分辨率為 1280x800,色深 24 位。你可以根據需要調整 -geometry 參數設置合適的虛擬屏幕分辨率(常見如 1920x1080 、2560×1440 等)
啟動成功後,在你的 PC 上使用 VNC Viewer(如 TigerVNC Viewer、RealVNC Viewer 等),連接樹莓派的 IP 和端口好,例如:
192.168.1.25:5901
當出現密碼提示時,輸入之前設置的 VNC 密碼,即可看到 Kali XFCE 桌面環境的畫面。此時,你已經在無顯示器的樹莓派上遠程使用圖形界面了
如果連接後出現灰屏或黑屏,可能是 xstartup 配置有誤或未賦予可執行權限,請返回檢查~/.vnc/xstartup 內容是否與上文一致且可執行。另外,確保前一步已經先 vncserver -kill 再編輯再啟動,否則舊實例不會讀取新配置。
vncserver -kill :1
設置 VNC 服務開機自啟#
為了在樹莓派每次啟動時自動開啟 VNC 服務(無需手動命令),我們可以設置 systemd 服務來管理 VNC Server。在 Kali 上創建一個新的 systemd 單元文件:
sudo nano /etc/systemd/system/vncserver@.service
填入以下內容並保存:
[Unit]
Description=Start TightVNC (TigerVNC) server at startup
After=syslog.target network.target
[Service]
Type=forking
User=bluedog
Group=bluedog
WorkingDirectory=/home/bluedog
PIDFile=/home/bluedog/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1920x1080 :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
以上配置中,用 % i 代表實例號,例如 vncserver@1.service 將 % i 替換為 1,從而啟動 :1 會話 。我們設置服務以 kali 用戶身份運行,在啟動前嘗試殺掉殘留的 :1 實例,啟動時設定分辨率為 1920x1080、色深 24 位,可根據需要修改。
保存文件後,刷新 systemd 配置並啟動、啟用服務:
sudo systemctl daemon-reload
sudo systemctl start vncserver@1.service # 啟動 VNC服務實例 :1
sudo systemctl enable vncserver@1.service # 設置開機自啟
現在即使樹莓派重啟,系統啟動過程中也會自動開啟 VNC 服務,使你隨時可以遠程連接桌面。
提示: 默認 VNC 服務監聽本地所有接口的 5901 端口,僅在局域網內訪問。如果需要通過互聯網訪問,建議結合下面的 FRP 內網穿透配置,或確保網絡環境安全並設置複雜的 VNC 密碼。
動態調整 vnc 的分辨率#
默認 vnc 的客戶端不支持動態調整 vnc 的分辨率適應客戶端的屏幕大小。但是可以手動修改。
xrandr
並且會顯示目前支持分辨率。
xrandr --output VNC-0 --mode 2560x1440
執行後就會調整當前 vnc 窗口的大小為對應分辨率。
配置 FRP 實現遠程訪問 (內網穿透)#
在許多實際場景中,樹莓派可能位於內網或沒有公網 IP,無法直接通過互聯網連接。我們可以使用 FRP 實現內網穿透,將樹莓派的 SSH 和 VNC 服務映射到公網伺服器,從而隨時遠程訪問樹莓派。
FRP (Fast Reverse Proxy) 由客戶端和服務端組成:
- FRP 服務端 (frps) 部署在具有公網 IP 或雲伺服器上,監聽來自客戶端的連接並開放端口供遠程訪問。
- FRP 客戶端 (frpc) 部署在樹莓派等內網設備上,主動連接 FRP 服務端並將本地服務端口映射出去。
下面假設你已有一台具有固定公網 IP 或域名的伺服器可用來充當 FRP 服務端(或使用某雲伺服器)。我們將使用該伺服器做中轉,將樹莓派的 SSH 及 VNC 端口映射出去。
在服務端配置 FRP 服務 (frps)#
(如果已有 FRP 服務端運行,可跳過此節。)在雲伺服器上:
-
下載 frp: 從 FRP 官方倉庫獲取最新版本。可以通過瀏覽 https://github.com/fatedier/frp/releases 找到最新版本下載鏈接。例如,這裡假設最新版本為 v0.61.0,對應 Linux amd64 平台:
wget https://github.com/fatedier/frp/releases/download/v0.61.0/frp_0.61.0_linux_amd64.tar.gz tar -xzf frp_0.61.0_linux_amd64.tar.gz cd frp_0.61.0_linux_amd64
-
配置 frps: 在解壓目錄下找到 frps.toml(如果不存在就創建)。寫入如下配置:
########################################
# Fast Reverse Proxy Server (frps) #
# 位置:阿里雲 ECS 4*.**.**.**0 #
########################################
# [common]
# ───────── 基礎監聽 ─────────
bindAddr = "0.0.0.0" # 監聽所有 IPv4(需要 IPv6 可改 ":::")
bindPort = 7501 # frpc 側的 serverPort 必須一致,且需要在雲伺服器上開啟對應端口
# ───────── 認證令牌 ─────────
auth.token = "請設置為自己的口令" # 客戶端 auth.token 必須保持相同
# ───────── 域名轉發端口 ─────
# 暫未啟用域名解析,直接關閉 80/443,避免多開端口
# vhostHTTPPort = 0
# vhostHTTPSPort = 0
# ───────── 日誌配置 ─────────
# logFile = "/root/frp/frps.log" # 自定義日誌路徑
# logLevel = "info" # 可選:trace, debug, info, warn, error
# logMaxDays = 7 # 日誌保留天數
# ───────── 可選:儀表盤 ─────
# dashboardPort = 7501 # Web UI 端口
# dashboardUser = "請設置為自己的用戶名"
# dashboardPwd = "請設置為自己的密碼"
# ───────── 可選:TLS 加固 ────
# 如果需要 mTLS,可啟用:
# authenticationMethod = "token,tls"
# tlsOnly = true
# 證書相關字段參見官方示例
subdomainHost = "如有請設置為自己的域名"
- 啟動 frps: 可以直接在前台運行:
sudo ./frps -c ./frps/frps.toml
或將其作為後台服務運行:
nohup ./frps -c ./frps/frps.toml &>/var/log/frps.log &
-
確保伺服器的防火牆開放所需端口(例如 TCP 7000,以及待映射出去的端口,如 SSH 的 6000、VNC 的 6001 等)。
-
配置 frps 開機自啟: 新建 systemd 服務 /etc/systemd/system/frps.service,寫入以下內容:
[Unit] Description=Fast Reverse Proxy Server (frps) After=network.target [Service] Type=simple ExecStart=/root/frp/frps -c /root/frp/frps.toml #注意自己的路徑! Restart=on-failure LimitNOFILE=65535 [Install] WantedBy=multi-user.target
保存後啟用服務:
sudo systemctl daemon-reload sudo systemctl enable frps sudo systemctl start frps
在樹莓派配置 FRP 客戶端 (frpc)#
回到我們的 Kali 樹莓派:
- 下載 frpc: 根據樹莓派架構下載 FRP 客戶端的 Linux ARM64 版本。版本需與服務端一致
cd /tmp
wget https://github.com/fatedier/frp/releases/download/v0.61.0/frp_0.61.0_linux_arm64.tar.gz
tar xzf frp_0.61.0_linux_arm64.tar.gz
cd frp_0.61.0_linux_arm64
sudo cp frpc /usr/bin/ # 安裝frpc可執行文件到路徑
sudo cp frpc.toml /etc/frpc/frpc.toml # 複製默認配置文件到 /etc
-
上述以 v0.61.0 為例,請替換為實際最新版號。 解壓後我們將 frpc 可執行文件放入 /usr/bin,方便直接運行;將示例配置重命名放入 /etc 便於統一管理。
-
配置 frpc: 編輯 /etc/frpc/frpc.toml 文件,根據實際需求修改。如我們希望將樹莓派的 SSH (22 端口) 和 VNC (5901 端口) 映射到伺服器對應端口,對應配置可以如下:
###############################################################################
# Fast Reverse Proxy Client (frpc)
# 主機:Raspberry Pi Kali — 192.168.**.**(請切換為你自己的IP地址)
###############################################################################
#############################
# frps 連接信息
#############################
serverAddr = "4*.**.**.**0" # 阿里雲公網 IP
serverPort = 7501 # frps.bindPort
loginFailExit = false # 斷線不退出,持續重連
[auth]
method = "token"
token = "請設置為自己的口令" # 與 frps.token 保持一致
#############################
# 端口映射(TCP)
#############################
[[proxies]] # SSH
name = "kalissh"
type = "tcp"
localIP = "192.168.**.**"
localPort = 22
remotePort = 5022 # 已在 frps.allowPorts & 安全組開放
[[proxies]] # VNC
name = "kalivnc"
type = "tcp"
localIP = "127.0.0.1"(這裡必須使用回環地址!!!)
localPort = 5901
remotePort = 5901 # 已在 frps.allowPorts & 安全組開放
在 [common] 部分填入 FRP 服務端地址、端口和認證 token 等公共參數 。然後定義兩個隧道:[ssh] 和 [vnc],分別將本地的 SSH 服務 (192.168.*0.**:22) 和 VNC 服務 (127.0.0.1:5901) 通過 FRP 暴露出去。其中 remote_port 指定 FRP 服務端開啟的端口號,你可根據需要更改,但要與服務端防火牆配置對應。
- 配置 frpc 開機自啟: 新建 systemd 服務 /etc/systemd/system/frpc.service,寫入以下內容:
[Unit]
Description=Fast Reverse Proxy Client (frpc)
After=network.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/home/username/frp/frpc -c /home/username/frp/frpc.toml #注意自己的路徑!
Restart=always
RestartSec=3
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
保存後啟用服務:
sudo systemctl daemon-reload
sudo systemctl enable frpc
sudo systemctl start frpc
這樣樹莓派啟動時將自動運行 frpc,並在網絡就緒後連接到 FRP 伺服器。
- 驗證連接: 在樹莓派上運行 sudo systemctl status frpc 查看日誌,確認已成功連上服務端,沒有錯誤。如有問題,可檢查 /var/log/syslog 或 /var/log/frpc.log(如果設置了日誌輸出)。
在伺服器上,也可以檢查 frps 日誌或使用 ss -tnl 確認對應端口已在監聽。
- 遠程訪問: 現在,在任何網絡環境下,你都可以通過訪問FRP 伺服器的 IP / 域名 + 端口來管理樹莓派:
- SSH 訪問:ssh kali@<伺服器 IP> -p 6000 (通過 FRP 的 5022 端口轉發到樹莓派的 22 端口)。首次使用時可將此組合加入~/.ssh/config 便於快捷連接 。
- VNC 訪問:在 VNC Viewer 中連接 <伺服器 IP>:6001,即通過 FRP 伺服器的 6001 端口轉發到樹莓派的 5901。輸入之前設置的 VNC 密碼,即可遠程桌面控制樹莓派。
經過 FRP,中間通信會通過我們指定的 token 驗證和(若啟用了 TLS 則)加密傳輸,確保了一定安全性。為了更安全,建議 SSH 採用密鑰認證並禁用密碼登錄 等額外加固措施。
現在,無論樹莓派位於何處(哪怕在蜂窩網絡等受 NAT 限制的環境),只要 FRP 客戶端和服務器保持連接,我們就能隨時通過 FRP 隧道遠程 SSH 或 VNC 訪問樹莓派上的 Kali 系統了。
其他軟件和折騰#
登錄歡迎界面定制#
組件 | 作用 |
---|---|
/etc/update-motd.d/* | 一系列可執行腳本,按數字前綴從小到大依次運行,將輸出拼接生成 動態 MOTD。 |
/etc/motd | 靜態 MOTD 文本。若存在內容,將附加在動態 MOTD 之後。 |
pam_lastlog.so | 由 PAM 調用,自動輸出 Last login 記錄。 |
/etc/issue.net + Banner 指令 | SSH 會話橫幅。可復用 ASCII Banner,實現本地 / 遠程一致。 |
文件結構與執行順序
/etc/update-motd.d/
├── 00-header # ASCII Banner
├── 10-sysinfo # 系統狀態
└── 20-network # 網絡信息
數字前綴決定執行先後;輸出順序即顯示順序。
製作 ASCII Banner#
-
在線生成
- 打開 https://patorjk.com/software/taag
- 輸入 BlueDog → 選擇字體(如 ANSI Shadow)→ Copy
-
本地生成
figlet -f slant "BlueDog"
toilet -f big -F metal "BlueDog"
將生成的字符畫複製備用。
編寫 00-header#
sudo tee /etc/update-motd.d/00-header >/dev/null <<'EOF'
#!/bin/bash
clear # 防止上屏殘留
# ---------------- ASCII Banner -----------------
cat <<'BANNER'
,---,. ,--, ,---,
,' .' \ ,--.'| .' .' `\
,---.' .' | | | : ,--, ,---.' \ ,---.
| | |: | : : ' ,'_ /| | | .`\ | ' ,'\ ,----._,.
: : : / | ' | .--. | | : ,---. : : | ' | / / | / / ' /
: | ; ' | | ,'_ /| : . | / \ | ' ' ; : . ; ,. : | : |
| : \ | | : | ' | | . . / / | ' | ; . | ' | |: : | | .\ .
| | . | ' : |__ | | ' | | | . ' / | | | : | ' ' | .; : . ; '; |
' : '; | | | '.'| : | : ; ; | ' ; /| ' : | / ; | : | ' . . |
| | | ; ; : ; ' : `--' \ ' | / | | | '` ,/ \ \ / `---`-'| |
| : / | , / : , .-./ | : | ; : .' `----' .'__/\_: |
| | ,' ---`-' `--`----' \ \ / | ,.' | : :
`----' `----' '---' \ \ /
`--`-'
BANNER
echo "-------------------------------------------------------------------------------------"
EOF
sudo chmod +x /etc/update-motd.d/00-header
編寫 10-sysinfo#
sudo tee /etc/update-motd.d/10-sysinfo >/dev/null <<'EOF'
#!/bin/bash
OS="$(lsb_release -ds)"
KERNEL="$(uname -r)"
MEM_USED="$(free -h --si | awk 'NR==2 {print $3 "/" $2}')"
DISK_ROOT="$(df -h / | awk 'NR==2 {print $3 "/" $2 " (" $5 ")"}')"
CPU_TEMP="$(vcgencmd measure_temp | cut -d= -f2)"
printf "🖥 系統: %s | 內核: %s\n" "$OS" "$KERNEL"
printf "💾 內存: %s\n" "$MEM_USED"
printf "📦 磁碟: %s\n" "$DISK_ROOT"
printf "🌡 溫度: %s\n" "$CPU_TEMP"
echo "-------------------------------------------------------------------------------------"
EOF
sudo chmod +x /etc/update-motd.d/10-sysinfo
編寫 20-network#
sudo tee /etc/update-motd.d/20-network >/dev/null <<'EOF'
#!/bin/bash
IP=$(hostname -I | awk '{print $1}')
SSID=$(iwgetid -r 2>/dev/null || echo "離線")
printf "🌐 IP 地址: %s\n" "$IP"
printf "📶 Wi-Fi SSID: %s\n" "$SSID"
echo "-------------------------------------------------------------------------------------"
EOF
sudo chmod +x /etc/update-motd.d/20-network
清空默認 /etc/motd#
sudo mv /etc/motd /etc/motd.bak # 備份
sudo touch /etc/motd # 創建空文件
這樣保留 Last login,去除 GPL/Warranty 說明。
SSH 橫幅同步(可選)#
sudo cp /etc/update-motd.d/00-header /etc/issue.net
sudo sed -i 's@^#Banner none@Banner /etc/issue.net@' /etc/ssh/sshd_config
sudo systemctl restart ssh
風扇 & 變速調控#
首先樹莓派 5 度風扇調度是 65 度才開始轉的,沒有安裝任務和大模型任務的時候基本不轉。
並且因為 gpiozero + RPi.GPIO 尚未全面支持樹莓派 5,因此會在訪問 GPIO 時爆出錯誤
所以我們只能通過 config.txt 中的參數啟用 RP1 控制器的風扇自動調速功能,原生支持 1~3 個溫控檔位(溫度觸發 + PWM 占空比組合)。
多檔溫控風扇配置方法(config.txt)
需要在 /boot/firmware/config.txt(樹莓派 5 使用的是該路徑)中添加如下配置:
# 樹莓派 5 風扇三檔自動調速配置
dtparam=cooling_fan=on
# 檔位1:40°C 開始,風扇以 60% 速運行(153/255)
dtparam=fan_temp1=40000,fan_temp1_hyst=5000,fan_temp1_speed=153
# 檔位2:50°C 開始,風扇以 80% 速運行(204/255)
dtparam=fan_temp2=50000,fan_temp2_hyst=5000,fan_temp2_speed=204
# 檔位3:55°C 開始,風扇全速運行(255/255)
dtparam=fan_temp3=55000,fan_temp3_hyst=5000,fan_temp3_speed=255
核心機制為:當 CPU 溫度超過某一檔的溫度門檻,就切換到對應速度,不會回落到低檔位,直到溫度低到對應滯後門限。
可額外設置滯後參數(建議設置):
dtparam=fan_temp3_hyst=5000 # 第三檔降到 50°C 才停
Wi-Fi 多網絡自動切換設置(家用 + 手機熱點)#
Kali 默認使用 wpa_supplicant 管理 Wi-Fi。
- 編輯 Wi-Fi 配置文件:
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
添加兩個網絡(按優先級自動切換):
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN
network={
ssid="你的家庭WiFi"
psk="你的家庭密碼"
priority=10
}
network={
ssid="你的手機熱點"
psk="你的熱點密碼"
priority=5
}
- priority 數值越大,優先連接;
- 自動連接在可用場景中優選上面的 Wi-Fi。
保存後重啟網絡服務或直接重啟:
sudo wpa_cli -i wlan0 reconfigure
安裝輸入法#
安裝 Google 拼音以及 Fcitx
sudo apt install fcitx fcitx-googlepinyin
切換輸入法框架
im-config
按照輸入法完成後一定要重啟系統才能生效.