基于FRP + ttyd 的遠程Web終端控制:無SSH環境下的救急方案

基于FRP + ttyd 的遠程Web終端控制:無SSH環境下的救急方案

      • 一、背景:當遠程訪問陷入困境時
      • 二、方案:FRP內網穿透 + ttyd Web終端
      • 三、操作步驟詳解(Linux環境)
        • 0. 前提條件
        • 1. 在被控服務器上創建工作目錄
        • 2. 下載必要的軟件
        • 3. 生成配置文件
        • 4. 復制文件到控制端
        • 5. 在被控服務器上啟動服務
        • 6. 在控制端電腦上啟動訪問者
        • 7. 在控制端電腦上訪問Web終端
      • 四、關鍵要點與注意事項

一、背景:當遠程訪問陷入困境時

想象一下:你需要管理一臺遠在千里之外的Linux服務器,但它的SSH服務突然罷工了,無法連接。更糟的是,你嘗試安裝像向日葵這樣的圖形化遠程工具也失敗了(可能是網絡限制、依賴問題或權限原因)。這時,你急需一個輕量級、無需復雜安裝、且能繞過SSH問題的遠程控制方案。

為什么需要這個方案?

  • SSH故障是常見問題: 配置錯誤、端口被封、服務崩潰、密鑰問題都可能導致SSH連接失敗。
  • 圖形工具依賴性強: VNC、向日葵等工具需要特定的桌面環境或復雜依賴,在最小化安裝的服務器或受限環境下容易安裝失敗。
  • 緊急恢復需求: 當服務器失聯時,需要一種快速建立“生命線”的方法進行診斷和修復。

二、方案:FRP內網穿透 + ttyd Web終端

這里的方案是:

  1. FRP (Fast Reverse Proxy - 快速反向代理):
    • 是什么? 一個專注于內網穿透的高性能反向代理應用。它能將內網(或受限制網絡)中的服務(如我們即將啟動的Web終端)安全地暴露到公網服務器(FRPS),讓外部的客戶端(FRPC)能夠訪問。它解決了服務器本身無法直接被公網訪問的問題。
    • 為什么用它? 它輕量、配置靈活、支持多種協議(這里用STCP),且能有效繞過防火墻/NAT限制。
  2. ttyd (Terminal To Web - 終端轉Web):
    • 是什么? 一個能將任何命令行終端(如bash即時轉換成網頁的工具。運行ttyd后,它會啟動一個Web服務器,你只需在瀏覽器中打開一個特定的URL,就能看到一個功能完備的終端界面,直接在網頁里輸入命令操作服務器。
    • 為什么用它? 無需安裝任何客戶端軟件(只需瀏覽器),完全基于Web,極其適合在SSH不可用時作為替代控制臺。它本身只提供本地訪問(localhost:8081),需要FRP將其“帶”到公網。

核心思想:

  1. 在被控服務器(Server)上運行ttyd,創建一個本地Web終端(監聽127.0.0.1:8081)。
  2. 使用FRP的STCP (Secure TCP) 模式,在Server端運行FRP客戶端(frpc)將本地的ttyd服務安全地“注冊”到公網的FRP服務器(FRPS)。
  3. 在你自己的電腦(控制端/Client)上也運行一個FRP客戶端(frpc),作為“訪問者”(visitor),連接到FRPS并請求訪問Server注冊的ttyd服務。
  4. FRPS在Server的frpc和Client的frpc之間建立一條點對點(P2P)的安全隧道
  5. 控制端(Client)的frpc在本地(0.0.0.0:9999)打開一個端口,將這個端口映射到Server上的ttyd服務。
  6. 最后,你在控制端的瀏覽器里訪問http://<控制端自己電腦的IP>:9999,就能看到并操作Server上的命令行終端了!數據流經安全的FRP隧道。

數據流簡化圖:

[你的瀏覽器] (訪問 http://localhost:9999)|V
[控制端電腦] (運行 frpc_visitor, 監聽 :9999)  <---(STCP安全隧道)---> [公網FRP服務器 (FRPS)]|                                                              |V                                                              V
[數據加密傳輸]                                                     [數據加密傳輸]|V[被控服務器] (運行 frpc 注冊服務)|V[被控服務器] (運行 ttyd, 提供真實的 bash 終端 :8081)

三、操作步驟詳解(Linux環境)

0. 前提條件
  • 一臺公網可訪問的服務器運行FRP服務端 (FRPS): 這是整個方案的“中轉站”。你需要提前在公網服務器(如VPS)上安裝并配置好FRPS(frpsfrps.ini)。本文重點在被控端和控制端配置,FRPS的安裝配置請參考FRP官方文檔。
  • 知道公網FRP服務器的IP地址和監聽端口(通常7000)。
  • 被控服務器和控制端電腦都需要能訪問互聯網。
1. 在被控服務器上創建工作目錄
mkdir /opt/remote_webtty
cd /opt/remote_webtty
2. 下載必要的軟件
# 下載 FRP 客戶端 (frpc) 壓縮包 (替換版本號0.42.0為最新穩定版,注意架構amd64/arm64)
wget -O frp_0.42.0_linux_amd64.tar.gz https://github.com/fatedier/frp/releases/download/v0.42.0/frp_0.42.0_linux_amd64.tar.gz# 解壓 FRP 壓縮包
tar -xf frp_0.42.0_linux_amd64.tar.gz# 下載 ttyd 可執行文件 (替換版本號1.6.0和架構x86_64為最新版)
wget -O ttyd  https://github.com/tsl0922/ttyd/releases/download/1.6.0/ttyd_linux.x86_64# 給 ttyd 文件添加可執行權限
chmod 777 ttyd

為什么下載這些? frpc用于連接公網FRPS并注冊服務。ttyd是將終端變成網頁的核心工具。我們下載的是預編譯好的二進制文件,避免了編譯依賴問題。

3. 生成配置文件

關鍵: 設置你的公網FRP服務器的地址和端口。

# 設置環境變量:你的公網FRP服務器的IP或域名 和 端口
export FRP_SERVER="your_frp_server_ip_or_domain"  # 替換成你的實際地址
export FRP_PORT="port"                           # 替換成你的FRPS端口# 生成被控服務器使用的 frpc 配置文件 (frpc_srv.ini)
cat > frpc_srv.ini <<-EOF
[common]
server_addr = $FRP_SERVER
server_port = $FRP_PORT[webtty]
type = stcp
sk = your_secret_key
local_ip = 127.0.0.1
local_port = 8081
EOF# 生成控制端使用的 frpc 訪問者配置文件 (frpc_client.ini)
cat > frpc_client.ini <<-EOF
[common]
server_addr = $FRP_SERVER
server_port = $FRP_PORT[webtty_visitor]
type = stcp
role = visitor
server_name = webtty
sk = your_secret_key
bind_addr = 0.0.0.0
bind_port = 9999
EOF

重要配置說明:

  • FRP_SERVER/FRP_PORT: 指向你的公網FRPS。
  • sk: 安全密鑰。這是STCP模式的核心安全措施。your_secret_key必須替換成一個強密碼,且被控端和控制端的配置文件中必須完全一致。沒有正確密鑰的訪問者無法連接。這是防止未授權訪問的關鍵!
  • [webtty]server_name=webtty: 名稱需對應,表示訪問者連接哪個服務。
  • local_port=8081bind_port=9999: 前者是ttyd在被控服務器本地監聽的端口(可改),后者是控制端frpc在本地打開的端口(可改),瀏覽器訪問的就是這個9999端口。
  • 安全警告: 示例中的sk = abcdefg是極弱密碼!務必替換為長且復雜的隨機字符串。
4. 復制文件到控制端
  • 將整個 /opt/remote_webtty 目錄(包含frp_0.42.0_linux_amd64文件夾、ttyd文件、frpc_client.ini文件)復制到你用于控制的電腦(Client)上。可以使用scprsync或任何你熟悉的文件傳輸方式。
5. 在被控服務器上啟動服務
cd /opt/remote_webtty
# 停止可能已存在的舊進程 (首次運行可忽略報錯)
killall -9 ttyd frpc 2>/dev/null || true
# 啟動 ttyd Web終端 (-p 8081 指定監聽端口,-c user:pass 設置基礎認證! 替換username/password)
./ttyd -p 8081 -c username:password bash &  # 后臺運行ttyd,提供bash終端
# 啟動 frpc 客戶端,連接到FRPS并注冊webtty服務
./frp_0.42.0_linux_amd64/frpc -c ./frpc_srv.ini

詳細解釋:

  • ./ttyd -p 8081 -c username:password bash &
    • -p 8081: 指定ttyd監聽本地的8081端口(需與frpc_srv.ini中的local_port一致)。
    • -c username:password: 設置基礎HTTP認證。強烈建議設置! 替換usernamepassword為你選擇的憑證。這樣即使有人猜到了FRP隧道地址,也需要輸入這個用戶名密碼才能進入終端。這是第二道安全防線。
    • bash: 指定ttyd運行哪個shell(通常是bashsh)。
    • &: 讓命令在后臺運行。
  • ./frp.../frpc -c ./frpc_srv.ini: 啟動FRP客戶端,加載srv.ini配置文件連接FRPS并注冊[webtty]服務。
6. 在控制端電腦上啟動訪問者
cd /opt/remote_webtty  # 進入你復制過來的目錄
# 啟動 frpc 訪問者,連接到FRPS并監聽本地9999端口
./frp_0.42.0_linux_amd64/frpc -c ./frpc_client.ini

詳細解釋:

  • 此命令啟動FRP客戶端,加載frpc_client.ini配置文件。
  • 它連接同一個FRPS,并聲明自己是一個訪問者(role=visitor),要訪問名為webtty的服務。
  • 它會在控制端電腦的所有網絡接口 (bind_addr=0.0.0.0) 上的 9999端口 (bind_port=9999) 開始監聽。此時,訪問本機的9999端口,流量就會被FRP通過安全隧道轉發到被控服務器的ttyd服務(8081端口)。
7. 在控制端電腦上訪問Web終端

打開你控制端電腦上的任何現代瀏覽器(Chrome, Firefox, Edge等),訪問以下地址:

http://localhost:9999/

或者,如果你需要從控制端電腦所在網絡的其他設備訪問(不推薦,除非網絡環境非常安全),使用控制端電腦的局域網IP:

http://<控制端電腦的局域網IP地址>:9999/

你會看到:

  1. 瀏覽器可能會彈出HTTP基礎認證對話框(如果ttyd配置了-c選項),輸入你在第5步設置的usernamepassword
  2. 認證通過后,一個功能齊全的命令行終端界面將加載到你的瀏覽器窗口中。
  3. 在這個網頁終端里輸入的命令(如ls, cd, top, vim等),會直接在被控服務器上執行,執行結果也會實時顯示在網頁上。就像你通過SSH連接操作一樣!

請添加圖片描述
請添加圖片描述

四、關鍵要點與注意事項

  1. 核心價值: 這是解決SSH完全不可用無法安裝圖形工具場景的終極救急方案。通過標準HTTP/HTTPS端口(80/443)工作,穿透能力強。
  2. 安全性是重中之重:
    • sk密鑰: 務必使用長且復雜的隨機字符串作為STCP的sk
    • ttyd認證: 強烈建議使用-c user:pass為Web終端設置登錄密碼。
    • 最小化暴露: STCP模式要求訪問者顯式配置,比直接暴露TCP端口(如tcp模式)更安全。完成后及時關閉服務。
    • 防火墻: 確保公網FRPS的端口(通常是7000)開放。被控服務器和控制端通常只需出站訪問互聯網。
  3. 穩定性: ttydfrpc進程可能因網絡波動或長時間運行退出。考慮使用systemd服務或supervisord等工具將其配置為守護進程,并設置自動重啟。
  4. 保持更新: 定期檢查并更新使用的frpttyd到最新版本,以獲取安全補丁和新功能。替換上述命令中的版本號。
  5. 替代方案: 如果條件允許,修復SSH或成功安裝標準遠程工具(如SSH本身、VNC、TeamViewer、AnyDesk)通常是更優、更穩定的長期方案。此方案更適合臨時應急
  6. HTTPS (可選但推薦): 對于公網FRPS,強烈建議配置HTTPS。對于ttyd,也可以配置自簽名證書(ttyd -S選項),并通過FRP的HTTPS類型暴露,實現瀏覽器到ttyd的全程加密。這增加了中間人攻擊的難度。

通過這個基于FRP內網穿透和ttyd Web終端的方案,即使面對SSH崩潰和常規工具安裝失敗的絕境,你也能迅速開辟一條可靠的遠程命令行之“路”,為恢復服務器掌控權贏得寶貴時間。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/93725.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/93725.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/93725.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用 AI 自動生成口型同步視頻,短視頻內容也能一人完成

近幾年做跨境電商或內容運營的同學&#xff0c;應該都能感受到視頻內容正逐漸從“錦上添花”變成了“必選項”。尤其是 TikTok、Instagram Reels、Facebook 短視頻、甚至一些獨立站內嵌視頻講解頁&#xff0c;對帶講解、有人臉、自然語音的視頻內容都有顯著的轉化提升作用。但實…

全基因組關聯分析(GWAS)中模型參數選擇:MLM、GLM與FarmCPU的深度解析

全基因組關聯分析(GWAS)是識別與復雜性狀相關的遺傳變異的重要工具。然而&#xff0c;模型選擇不當會導致假陽性率升高或統計功效降低。本文將為大家介紹GWAS中如何選擇合適的模型參數&#xff0c;重點解析廣義線性模型(GLM)、混合線性模型(MLM)和FarmCPU三種主流模型的原理、區…

6.蘋果ios逆向-過ssl證書檢測-安裝SSL Kill Switch 3

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 內容參考于&#xff1a;圖靈Python學院 工具下載&#xff1a; 鏈接&#xff1a;https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwdzy89 提取碼&#xff1…

Tomcat,WebLogic等中間件漏洞實戰解析

1.tomactCVE-2017-12615首先啟動環境&#xff0c;這里所有的漏洞都是在vulhub中的然后去訪問我們的網站點擊打開哥斯拉去生成一個jsp木馬然后打開抓包&#xff0c;刷新一下頁面&#xff0c;修改put方法將我們的木馬上傳一下&#xff0c;這里需要在jsp后加一個/&#xff0c;來繞…

15、點云<—>深度圖轉換原理

* 定義虛擬相機分辨率. Width := 800 Height := 800* 定義一個系數用于在3D模型中計算圖像的邊緣 BorderFact := 1.5* 是否選擇鏡頭. IsTelecentric := false GenParamName := [lut,intensity,disp_pose_0,alpha_0,disp_background] GenParamValue := [hsi,coord_z,true,0.3,tr…

大疆無人機開發:MQTT 賦能機場系統集成的Java實戰之旅

目錄 集成實現步驟? 項目初始化? MQTT 連接配置? 大疆無人機與 MQTT 集成? 機場系統功能實現? 代碼實戰與案例分析? 示例代碼展示? 案例分析? 數據格式不匹配問題? 指令沖突問題? 性能優化與安全保障? 性能優化策略? 安全保障措施? 集成實現步驟? …

邏輯回歸詳解:從數學原理到實際應用

文章目錄一、邏輯回歸的核心思想&#xff1a;從線性到概率1. 線性回歸的局限與突破Sigmoid函數特性&#xff08;代碼可視化&#xff09;&#xff1a;2. 邏輯回歸的預測公式二、損失函數&#xff1a;如何學習最優參數&#xff1f;1. 對數損失函數的數學定義損失函數解析&#xf…

粒子群優化算法(Particle Swarm Optimization, PSO) 求解二維 Rastrigin 函數最小值問題

前言 提醒&#xff1a; 文章內容為方便作者自己后日復習與查閱而進行的書寫與發布&#xff0c;其中引用內容都會使用鏈接表明出處&#xff08;如有侵權問題&#xff0c;請及時聯系&#xff09;。 其中內容多為一次書寫&#xff0c;缺少檢查與訂正&#xff0c;如有問題或其他拓展…

【GitHub Workflows 基礎(二)】深入理解 on、jobs、steps 的核心語法與執行邏輯

&#x1f4d8; GitHub Workflows 基礎&#xff08;二&#xff09;&#xff1a;深入理解 on、jobs、steps 的核心語法與執行邏輯繼第一篇講完 .github/workflows/ 中多個工作流的結構后&#xff0c;本篇將深入 GitHub Actions 的核心三要素&#xff1a;on&#xff08;觸發器&…

React Filber及核心原理

1. React Fiber 的核心目標??增量渲染?&#xff1a;將大型更新拆解為可中斷的小任務&#xff08;時間切片&#xff09;&#xff0c;避免阻塞主線程?優先級調度?&#xff1a;動態管理任務執行順序&#xff08;如用戶交互 > 動畫 > 數據加載&#xff09;。與瀏覽器協作…

Shader開發(五)什么是渲染管線

在計算機圖形學中&#xff0c;渲染管線&#xff08;Rendering Pipeline&#xff09; 是圖形處理器&#xff08;GPU&#xff09;將3D網格數據轉化為屏幕圖像的核心流程。無論是炫酷的游戲畫面還是逼真的動畫場景&#xff0c;這一切都離不開渲染管線的默默工作。對于想要學習著色…

CentOS7 使用Docker安裝MinIO完整教程

目錄 1. MinIO簡介 什么是MinIO? 為什么選擇Docker安裝? 2. 環境準備 檢查Docker狀態 檢查防火墻設置 創建存儲目錄 3. 快速啟動MinIO 基礎啟動命令 驗證啟動狀態 4. 配置持久化存儲 停止并刪除臨時容器 使用數據卷啟動MinIO 驗證數據持久化 5. 訪問MinIO控制臺…

【數據庫】時序數據庫選型指南:從大數據視角看IoTDB的核心優勢

文章目錄前言-官網鏈接一、時序數據管理的時代挑戰二、時序數據庫選型的六大核心維度1. 數據模型設計2. 寫入與查詢性能3. 存儲效率4. 系統擴展性5. 生態兼容性6. 運維復雜度三、IoTDB的技術架構解析1. 存儲引擎創新2. 計算引擎優勢3. 分布式架構設計四、行業解決方案對比1. 能…

【25-cv-08364】Keith攜Hello Angel版權圖發案

Hello Angel版權圖案件號&#xff1a;25-cv-08364起訴時間&#xff1a;2025/7/22原告&#xff1a;Angelea Clark Van Dam原告律所&#xff1a;Keith受理法院&#xff1a;伊利諾伊州北區地方法院原告介紹原告是是一位來自澳大利亞的藝術家&#xff0c;筆名為Hello Angel&#xf…

SkSurface---像素的容器:表面

如果說 SkCanvas 是畫布&#xff0c;是所有繪圖操作的提供者的話&#xff0c;那么 SkSurface 就是畫布的容器&#xff0c;我們稱之為表面&#xff0c;它負責管理畫布對應的像素數據。這些像素數據可以是在內存中創建的&#xff0c;也可以是在 GPU 顯存中創建的。創建一個空白表…

26.(vue3.x+vite)以pinia為中心的開發模板

效果截圖 代碼實現 HelloWorld.vue <template><div style="padding: 20px;">介紹:<br>1:使用class 來減少pinia(store)的代碼量<br>

華為AI Agent智能園藝助手開發案例

一、引言與行業背景 在數字化與智能化日益滲透我們生活的今天&#xff0c;園藝這一傳統而充滿生機的領域&#xff0c;也迎來了智能化的革新。華為AI Agent智能園藝助手通過融合人工智能與園藝專業知識&#xff0c;為用戶提供一站式、個性化的園藝養護解決方案&#xff0c;徹底改…

Linux Flathub軟件管理方法 使用指南

Flathub 使用指南&#xff1a;軟件安裝、管理及常用軟件推薦 一. 什么是 Flathub&#xff1f; Flathub 是 Flatpak 應用程序的主要分發中心&#xff0c;類似于 Linux 上的"應用商店"。它提供了一種跨發行版的軟件打包和分發方式&#xff0c;讓用戶可以在任何 Linux 發…

GitLab 18.2 發布幾十項與 DevSecOps 有關的功能,可升級體驗【二】

沿襲我們的月度發布傳統&#xff0c;極狐GitLab 發布了 18.2 版本&#xff0c;該版本帶來了議題和任務的自定義工作流狀態、新的合并請求主頁、新的群組概覽合規儀表盤、下載安全報告的 PDF 導出文件、中心化的安全策略管理&#xff08;Beta&#xff09;等幾十個重點功能的改進…

??免費語音轉換服務(TTS)全面指南

????1. TTS技術概述?? TTS&#xff08;Text-to-Speech&#xff09;通過AI將文字轉化為自然語音&#xff0c;核心技術包括??深度神經網絡&#xff08;DNN&#xff09;??、??語音韻律建模??和??聲學合成??。其核心優勢在于&#xff1a; ??多語言支持??&a…