如何使用xterm.js创建基于Web的终端ssh到本地网络上的系统

Ank*_*rni 25 linux networking terminal-emulator ssh-tunnel xtermjs

我遇到了这个令人敬畏的库xterm.js,它也是Visual Studio Code终端的基础.我有一个非常普遍的问题.

我想通过基于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,这样我就不必去构建基于Web的终端了吗?在以这种方式暴露终端时,我应该记住哪些主要的安全问题?

我在考虑在AWS和本地网络ip之间使用固定的中间服务器,并使用某种反向ssh隧道进程来做这个但我不确定这是否是正确的方法还是可以有更简单/更好的方式为达到这个.

我知道数字海洋,谷歌云,他们都这样做但他们必须连接到具有公共IP的计算机,而我在本地网络中有一台机器.我真的不想配置路由器来进行任何类型的设置.

Ank*_*iya 15

经过一些研究,这里是工作代码.

在图书馆之后,您需要了解它的工作原理.

1)https://socket.io/

该库用于从客户端到服务器的传输包.

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

该库用于终端视图.

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

这是主图书馆.用于与远程服务器建立连接.

第1步:在项目文件夹中安装此3库

Setp 2:从节点侧开始为打开的套接字创建server.js文件

步骤3:将客户端套接字连接到节点服务器(两者都在本地计算机中)

棘手的逻辑就是如何使用socket和ssh2

在发出socket时你需要使用ssh2库来触发ssh命令.在响应ssh2(从服务器)你需要传输套接字包到客户端就是它

这里不写更多的是示例代码

https://github.com/ankitvadariya/ssh-client-connection

这就像有以下文件和文件夹

server.js
package.json
src/
xtream/
Run Code Online (Sandbox Code Playgroud)

首先,您需要在server.js上配置服务器IP,用户和密码或证书文件.然后点击节点server.js

PS:别忘了跑 npm install

如果您有任何疑问,请告诉我!