首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

ASP.NET 網頁實現 SSH 遠端連線 Linux:權限不足需 ActiveX 或後端服務

     編輯:程式設計綜合問答

問題背景

ASP.NET 網站欲整合 SharpSSH 實現瀏覽器端 SSH 連線 Linux 伺服器,執行指令並回顯結果。WinForm 可行,Web 環境報錯無法實例化。

根本原因

  • ASP.NET 執行身分(IIS 應用程式池身分)權限極低,無桌面互動權限,無法啟動 SSH 客戶端進程/建立網路連線。
  • SharpSSH 依賴底層 Socket/執行緒模型,在 IIS 請求執行緒中受限於信任等級與沙箱。

可行架構

  1. 後端服務模式(推薦):
    • 開發獨立 Windows Service / .NET Core Console App / Linux Daemon,部署於有網路權限的主機。
    • 服務內整合 SSH.NET (Renci.SshNet) 或 SharpSSH,暴露 REST/gRPC API(POST /ssh/exec)。
    • ASP.NET 前端呼叫 API,獲取指令輸出並渲染頁面。
  2. ActiveX / NPAPI 外掛(已淘汰):
    • 僅 IE 支援,現代瀏覽器 (Edge/Chrome/Firefox) 已移除支援,**不建議**。
  3. WebSSH 開源專案:
    • WebSSH (Python/Go) 提供 WebSocket + xterm.js 終端機模擬,可直接嵌入網頁。

關鍵技術點

  • SSH 庫選擇:SSH.NET 純 managed、NuGet 安裝、支援 .NET Core/Framework,優於 SharpSSH。
  • 非同步執行:避免阻塞 IIS 執行緒,使用 async/await 配合 Task.Run。
  • 安全性:SSH 金鑰/密碼加密儲存,API 加上 JWT 鑑權,審計所有指令日誌。

總結

網頁直連 SSH 不可行,**後端服務 + API** 是正規解法,技術成熟、安全可控。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved