如何使用xterm.js创建基于web的终端ssh到本地网络上的系统
我遇到了这个令人敬畏的库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的计算机,而我在本地网络中有一台机器。我真的不想配置路由器做任何设置。
经过少数研究,这里是工作代码。
以下图书馆您需要了解它的工作方式。
该库用于发射包从客户机到服务器。
2)https://github.com/staltz/xstream
该库用于终端视图。
3)https://github.com/mscdex/ssh2
这是主库。用于与远程服务器建立连接。
第1步: 连接客户端套接字节点: 开始从节点侧为开放式插槽
第3步创建一个server.js文件: 在项目文件夹
SETP 2安装此3库服务器(都是在本地机器)
棘手的逻辑仅仅是如何使用插座和SSH2
插座上的EMIT需要触发SSH命令使用ssh2库。上SSH2(从服务器)的响应,你需要套接字包传送到客户端,就是这样
不要写更多的这里是示例代码我已经上传你
这就像有下列文件夹&
server.js
package.json
src/
xtream/
首先你需要配置你的服务器IP,在server.js用户名和密码或证书文件。和刚打节点server.js
P.S:不要忘了运行npm install
让我知道如果您有任何问题!
感谢Ankit,这么多的帮助(流程的第一部分真的很有帮助)。我会尽快测试代码并通知您。将尽快接受答案 –
当然..如果您有任何问题或疑问,请让我知道。乐于帮助。谢谢 –
谢谢@Ankitvadariya。代码在完成一些更改后完美运行。 你也可以描述你将如何接近同样的事情,如果你有 你有 1) - 背后NAT的一些Linux客户端(它没有公共IP) 2) - aws服务器 3) - 客户想要让服务器访问其终端 由于客户端在NAT后面,服务器不能直接SSH到它。我认为我们可以使用客户端ssh到服务器并使用反向ssh隧道来获取客户端访问权限,但流程的流程以及它将如何工作。可以通过修改上面的代码来做到这一点吗? – kartik
我不知道目前如何,但谢谢你的xtremjs)) – Alex