2017-08-28 377 views
18

我遇到了這個令人敬畏的庫xterm.js,這也是Visual Studio Code的終端的基礎。我有一個非常普遍的問題。如何使用xterm.js創建基於web的終端ssh到本地網絡上的系統

我想通過基於Web的終端(它不在網絡中,可能位於aws服務器上)在本地網絡上訪問機器(ssh到機器)。我能夠在本地網絡中成功完成此操作,但無法通過Internet - >本地網絡得出結論。

爲例 - An aws server running the application on ip 54.123.11.98 which has a GUI with a button to open terminal. I want to open terminal of a local machine which is in a local network somewhere behind some public ip on local ip 192.168.1.7.

可以在上面的例子中使用某種解決方案,在那裏我可以使用xterm.js的,這樣我就不必去構建一個基於網絡終端能實現嗎?以這種方式暴露終端時,我應該牢記的主要安全問題是什麼?

我在考慮使用AWS和本地網絡ip之間的固定中間服務器,並使用某種反向ssh隧道進程來做到這一點,但我不確定這是正確的方式還是可能存在更簡單/更好的方式來實現這一點。

我知道數字海洋,谷歌雲,他們都這樣做,但他們必須連接到具有公共IP的計算機,而我在本地網絡中有一臺機器。我真的不想配置路由器做任何設置。

+0

我不知道目前如何,但謝謝你的xtremjs)) – Alex

回答

8

經過少數研究,這裏是工作代碼。

以下圖書館您需要了解它的工作方式。

1)https://socket.io/

該庫用於發射包從客戶機到服務器。

2)https://github.com/staltz/xstream

該庫用於終端視圖。

3)https://github.com/mscdex/ssh2

這是主庫。用於與遠程服務器建立連接。

第1步: 連接客戶端套接字節點: 開始從節點側爲開放式插槽

第3步創建一個server.js文件: 在項目文件夾

SETP 2安裝此3庫服務器(都是在本地機器)

棘手的邏輯僅僅是如何使用插座和SSH2

插座上的EMIT需要觸發SSH命令使用ssh2庫。上SSH2(從服務器)的響應,你需要套接字包傳送到客戶端,就是這樣

不要寫更多的這裏是示例代碼我已經上傳你

Download code

這就像有下列文件夾&

server.js 
package.json 
src/ 
xtream/ 

首先你需要配置你的服務器IP,在server.js用戶名和密碼或證書文件。和剛打節點server.js

P.S:不要忘了運行npm install

讓我知道如果您有任何問題!

+0

感謝Ankit,這麼多的幫助(流程的第一部分真的很有幫助)。我會盡快測試代碼並通知您。將盡快接受答案 –

+0

當然..如果您有任何問題或疑問,請讓我知道。樂於幫助。謝謝 –

+0

謝謝@Ankitvadariya。代碼在完成一些更改後完美運行。 你也可以描述你將如何接近同樣的事情,如果你有 你有 1) - 背後NAT的一些Linux客戶端(它沒有公共IP) 2) - aws服務器 3) - 客戶想要讓服務器訪問其終端 由於客戶端在NAT後面,服務器不能直接SSH到它。我認爲我們可以使用客戶端ssh到服務器並使用反向ssh隧道來獲取客戶端訪問權限,但流程的流程以及它將如何工作。可以通過修改上面的代碼來做到這一點嗎? – kartik

相關問題