我偶然发现了这个很棒的图书馆xterm.js https://xtermjs.org/这也是 Visual Studio Code 终端的基础。我有一个非常普遍的问题。
我想通过基于网络的终端(不在网络中,可能位于 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的计算机,而我在本地网络中有一台机器。我真的不想配置路由器进行任何类型的设置。
经过一番研究后,这里是工作代码。
图书馆:
1) https://socket.io/ https://socket.io/
该库用于从客户端向服务器传输包。
2) https://github.com/staltz/xstream https://github.com/staltz/xstream
该库用于终端视图。
3) https://github.com/mscdex/ssh2 https://github.com/mscdex/ssh2
这是用于与远程服务器建立连接的主库。
第 1 步:将 Library 3 安装到您的项目文件夹中
步骤2:从节点端开始创建一个server.js
打开套接字的文件
步骤3:
连接客户端套接字到节点服务器(两者都在本地计算机中)
棘手的逻辑是如何使用socket和ssh2。
在发出套接字时,您需要使用 ssh2 库触发 SSH 命令。根据 ssh2 库(来自服务器)的响应,您需要将套接字包传输到客户端。就是这样。
Click here https://github.com/ankitvadariya/ssh-client-connection找到一个例子。
该示例将包含以下文件和文件夹:
Type Name
------------
FILE server.js
FILE package.json
FOLDER src
FOLDER xtream
首先,您需要在 server.js 上配置服务器 IP、用户和密码或证书文件,然后运行node server.js
.
P.S.:别忘了跑步npm install
如果您有任何疑问,请告诉我!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)