Po chvilce zkoumání je zde funkční kód.
Knihovny:
1) https://socket.io/
Tato knihovna se používá pro přenos balíků z klienta na server.
2) https://github.com/staltz/xstream
Tato knihovna se používá pro zobrazení terminálu.
3) https://github.com/mscdex/ssh2
Toto je hlavní knihovna, která se používá pro navázání spojení s vaším vzdáleným serverem.
Krok 1:Nainstalujte knihovnu 3 do složky projektu
Krok 2:Začněte ze strany uzlu a vytvořte server.js
soubor pro otevřený soket
Krok 3:Připojení klientského soketu k serveru uzlu (oba jsou v místním počítači)
Složitá logika je, jak používat socket a ssh2.
Při vysílání soketu musíte spustit příkaz SSH pomocí knihovny ssh2. Na odezvu knihovny ssh2 (ze serveru) musíte přenést balík soketu klientovi. To je ono.
Kliknutím sem najdete příklad.
Tento příklad bude mít tyto soubory a složky:
Type Name
------------
FILE server.js
FILE package.json
FOLDER src
FOLDER xtream
Nejprve musíte nakonfigurovat IP serveru, uživatele a heslo nebo soubor certifikátu na server.js a stačí spustit node server.js
.
P.S.:Nezapomeňte spustit npm install
Pokud máte nějaké dotazy, dejte mi vědět!
Po nějakém výzkumu později jsem narazil na tuto službu:https://tmate.io/, která dělá svou práci perfektně. Ačkoli pokud potřebujete webový terminál tmate, musíte použít jejich ssh servery jako reverzní proxy, což mi v ideálním případě nebylo příjemné. Poskytují však tmate-server, který lze použít k hostování vašeho vlastního reverzního proxy serveru, ale postrádá webové uživatelské rozhraní. Ale k vybudování systému, kde musíte přistupovat ke klientovi za NAT přes ssh na webu, níže jsou kroky.
- Nainstalujte a nakonfigurujte tmate-server na nějakém cloudovém počítači.
- Nainstalujte tmate na stranu klienta a nakonfigurujte připojení ke cloudovému počítači.
- Vytvořte aplikaci nodejs pomocí xterm.js (snadné díky komunikaci založené na WebSocket), která se připojí k vašemu tmate-serveru a předá příkazy příslušnému klientovi. (Dejte si pozor na bezpečnostní problémy při odhalení této aplikace, protože budete předávat příkazy Linuxu).
- V závislosti na vašem případu použití budete možná potřebovat malý obal kolem klienta tmate na straně klienta, který jej spustí/zastaví automaticky nebo pomocí nějaké uživatelské/manuální akce.
Poznámka:Napsal jsem také malý obal na straně klienta pro spuštění/zastavení a předání požadovaných informací serveru API (zapsaného v nodejs), který pak informace předá jinému API, které připojí prohlížeč k příslušné relaci klienta . Vzhledem k tomu, že jsme tuto aplikaci napsali, zahrnovala autentizaci i omezení příkazů toho, co lze na terminálu spustit. Můžete si to hodně přizpůsobit.