banner
B1ueD0g

BlueDog's Home

上班使我怨气比鬼重!
x
telegram
email

樹莓派刷Kali全配置過程

本指南詳細介紹如何在樹莓派 5上以無顯示屏 (headless) 方式部署 Kali Linux (XFCE 桌面環境),並使用 FRP (Fast Reverse Proxy) 實現遠程訪問。內容涵蓋從準備鏡像、燒錄 TF 卡、系統初始化配置,到安裝常用工具、設置圖形界面和 VNC 服務,以及通過 FRP 進行內網穿透遠程連接的完整步驟。所有操作均針對無屏幕環境設計,並提供清晰的命令行示例(含註釋)和配置文件示例。

涉及工具介紹#

硬件工具清單#

  1. 樹莓派 5-16G 版
    1. 樹莓派 5 官方產品簡介:https://datasheets.raspberrypi.com/rpi5/raspberry-pi-5-product-brief.pdf
    2. 樹莓派 5 機械模組 & 接口圖紙:https://datasheets.raspberrypi.com/rpi5/raspberry-pi-5-mechanical-drawing.pdf
    3. 樹莓派 5 官網入門文檔:https://www.raspberrypi.com/documentation/computers/raspberry-pi.html
  2. 樹莓派 5 鋁合金 CNC 超薄外殼 - 帶風扇版(請自行淘寶搜索購買)
  3. 官方 PD 充電器(Raspberry Pi 5 的性能比 Raspberry Pi 4 更高,使用功率不足的電源可能會遇到問題。故推薦使用高質量的 5V 5A USB-C 電源)
  4. TF 卡 - U3V30A2(64GB 及以上)
  5. 讀卡器

軟件工具清單#

  1. Kali 官方鏡像:https://kali.download/arm-images/kali-2025.2/kali-linux-2025.2-raspberry-pi-arm64.img.xz
  2. 樹莓派官方啟動盤製作工具:https://downloads.raspberrypi.org/imager/
  3. VNC 工具:https://www.realvnc.com/en/connect/download/viewer/(筆者個人推薦)
  4. 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 提供了一系列預設配置項,方便我們在燒錄時寫入系統配置 :

image-20250710223232323

  • 啟用 SSH: 在 “服務” 中勾選 “Enable SSH”,選擇允許使用密碼驗證登錄。這樣系統首次啟動時將自動開啟 SSH 服務。
    image-20250710223212345
  • 設置主機名: 在 “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” 或相應時區。正確的區域設置有助於系統顯示中文並使用正確的鍵盤佈局。
    image-20250710223159693

配置完成後,點擊 “保存”,然後點擊 “寫入” 開始燒錄鏡像並應用上述預設選項。

注意: 根據社區經驗,Kali Linux 官方鏡像不完全支持 Raspberry Pi Imager 的自動預配置功能 。這意味著即使在 Imager 中設置了 SSH 和 Wi-Fi,首次啟動後未必生效。為確保無顯示器情況下能夠遠程連接,我們可以採取手動方式輔助配置 SSH 和 Wi-Fi(見下文)。

等待寫入完成: 燒錄過程可能需數分鐘到十幾分鐘。完成後 Imager 會驗證寫入結果。燒錄成功後,先不要急於取出卡,我們還需進行一些手動配置(特別是確保 SSH 啟用和 Wi-Fi 配置正確)。

image-20250710224339976

首次啟動前的手動配置(啟用 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 分配。

image-20250711111216799

首次啟動與 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 默認軟件源在國外伺服器,在國內直接更新可能較慢甚至失敗。我們可以將軟件源切換為國內鏡像源(如清華大學開源鏡像站)以提升速度 。操作步驟:

  1. 備份源列表: 編輯源列表文件前,建議備份原文件:

    sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
    
  2. 編輯 /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
    
  3. 上述兩行分別指定了二進制軟件包源和源碼源的地址。其中 kali-rolling 是 Kali 的滾動更新分支,包含 main(主)、contrib(貢獻)、non-free(非自由)及 non-free-firmware(非自由固件)組件。確保根據實際需要包含所有組件,以免缺少驅動或工具。

  4. 更新 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/InstallerLargeEverything
kali-linux-default 工具集
top10, wireless, web 等分類工具⛔️(手動安裝)✅(包含多數)✅(全部)
所有 Kali 元包(metapackage)⛔️部分✅ 全部
工具總數(粗略估計)100–200300–400600+

該命令可能下載數 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

image-20250711092623134

設置 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

image-20250711093944551

並且會顯示目前支持分辨率。

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 服務端運行,可跳過此節。)在雲伺服器上:

  1. 下載 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
    
  2. 配置 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 = "如有請設置為自己的域名"
  1. 啟動 frps: 可以直接在前台運行:
sudo ./frps -c ./frps/frps.toml

或將其作為後台服務運行:

nohup ./frps -c ./frps/frps.toml &>/var/log/frps.log &
  1. 確保伺服器的防火牆開放所需端口(例如 TCP 7000,以及待映射出去的端口,如 SSH 的 6000、VNC 的 6001 等)。

  2. 配置 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 樹莓派:

  1. 下載 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
  1. 上述以 v0.61.0 為例,請替換為實際最新版號。 解壓後我們將 frpc 可執行文件放入 /usr/bin,方便直接運行;將示例配置重命名放入 /etc 便於統一管理。

  2. 配置 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 服務端開啟的端口號,你可根據需要更改,但要與服務端防火牆配置對應。

  1. 配置 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 伺服器。

  1. 驗證連接: 在樹莓派上運行 sudo systemctl status frpc 查看日誌,確認已成功連上服務端,沒有錯誤。如有問題,可檢查 /var/log/syslog 或 /var/log/frpc.log(如果設置了日誌輸出)。

在伺服器上,也可以檢查 frps 日誌或使用 ss -tnl 確認對應端口已在監聽。

  1. 遠程訪問: 現在,在任何網絡環境下,你都可以通過訪問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 系統了。

其他軟件和折騰#

登錄歡迎界面定制#

image-20250711110405304

組件作用
/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#

  1. 在線生成

  2. 本地生成

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 時爆出錯誤

image-20250711111602896

所以我們只能通過 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。

  1. 編輯 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

image-20250711101408562

切換輸入法框架

im-config

image-20250711101523278

按照輸入法完成後一定要重啟系統才能生效.

image-20250711103900755

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。