我碰到这个真棒库xterm.js这也是Visual Studio代码的终端基础。我有一个非常普遍的问题。
我想通过基于Web的终端的本地网络上访问的机器(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隧道的过程之间的固定中间服务器要做到这一点,但我不知道这是正确的方式或可能会有一个更简单/更好的办法为达到这个。
我知道,数字海洋,谷歌的云,他们都做到这一点,但他们必须连接到具有公网IP,而我在本地网络中有一台机器一台电脑。我真的不希望配置路由器做任何这种设置。
一些研究后,在这里工作的代码。
以下库,你需要了解它的工作。
该库用于发射包从客户机到服务器。
2)https://github.com/staltz/xstream
这个库用于终端视图。
3)https://github.com/mscdex/ssh2
这是主库。这是用于与远程服务器建立连接。
第1步:在你的项目文件夹中安装此3库
SETP 2:从节点侧开始创建开放套接字server.js文件
步骤3:连接客户端套接字节点服务器(两者都是在本地机器)
棘手的逻辑仅仅是如何使用插座和SSH2
对插座的EMIT需要使用SSH2库引发ssh命令。上SSH2(从服务器)的响应,你需要套接字包传送到客户端,就是这样
不要写更多这里是示例代码
https://github.com/ankitvadariya/ssh-client-connection
这就像有下列文件和文件夹
server.js
package.json
src/
xtream/
首先你需要配置你的服务器IP,在server.js用户名和密码或证书文件。和刚打节点server.js
P.S:不要忘了运行npm install
让我知道如果您有任何问题!
经过一番研究后,我遇到了这个服务:https://tmate.io/这完全没有工作。但如果你需要的tmate你必须用自己的SSH服务器作为反向代理在理想情况下我不舒服一个基于网络的终端。然而,他们提供可用于举办自己的反向代理服务器,但缺乏网络界面tmate服务器。但建,你必须通过ssh访问NAT后面的客户端上的网络系统,下面是步骤。
注:我写了一篇关于客户端一个小包装,以及启动/停止和传递所需信息的API服务器(写的NodeJS),然后通过在其上浏览器连接到相应的客户端会话的信息到另一个API 。既然我们已经写了这个应用中包含的认证,以及什么可以在终端运行命令的限制。您可以自定义了很多。