Как создать веб-терминал с помощью xterm.js для ssh в систему в локальной сети

я наткнулся на эту удивительную библиотеку xterm.js который также является базой для терминала кода Visual Studio. У меня очень общий вопрос.

Я хочу получить доступ к машине (ssh в машину) в локальной сети через веб-терминал(который находится вне сети, может быть на сервере aws). Я смог сделать это в локальной сети успешно, но я не мог прийти к выводу, чтобы сделать это из интернета-->локальной сети .

в качестве примера - 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 для этого, но я не уверен, что это правильный путь или есть ли более простой/лучший способ достичь этого.

Я знаю digital ocean, Google cloud, все они делают это, но они должны подключиться к компьютеру, который имеет публичный ip, а у меня есть машина в локальной сети. Я действительно не хочу настраивать маршрутизатор для какой-либо настройки .

1 ответов


после нескольких исследований здесь работает код.

следующие библиотеки вам нужно понять, как его работы.

1) https://socket.io/

эта библиотека используется для передачи пакетов от клиента к серверу.

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

эта библиотека используется для просмотра терминала.

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

это главная библиотека. который используется для установления соединения с удаленным сервером.

Шаг 1 : Установите эту библиотеку 3 в папку проекта

Setp 2 : Начните со стороны узла создайте сервер.JS файл для открытого сокета

Шаг 3 : Подключение клиентского сокета к узловому серверу (оба находятся в локальной машине )

хитрая логика-это просто использование сокета и ssh2

при излучении сокета вам нужно вызвать команду ssh с помощью библиотеки ssh2. на ответ ssh2 (с сервера) вам нужно передать пакет сокета клиенту, вот и все

Не пишите больше вот пример кода, который я загрузил для вас

скачать код

Это похоже на следующие файлы и папки

server.js
package.json
src/
xtream/

сначала вам нужно настроить IP-адрес сервера, пользователя и пароль или файл сертификата на сервере.js. и просто нажмите node server.js

P. S : Не забудьте запустить npm install

Дайте мне знать, если у вас есть вопросы !