我想使用 xtermjs、socket.io、ssh2 等库在 React App 上实现基于 Web 的终端。我发现了很多在某种程度上模拟 TTY 行为的工作示例,但我确实有一个特定要求:虽然浏览器上的模拟终端接受并处理用户输入(通过键盘/鼠标事件),但它也应该接受其他方式的输入。例如,您可以有一个发送“ls”命令的按钮,并带有一个用于“Enter”效果的新行。
我意识到,像shellinabox这样的库服务于网页,但不支持对套接字流的干预。还有诸如湿的解决方案等等。为了完整起见,我想提供一些链接,希望有人指出我可能走在正确的轨道上:
- https://xtermjs.org/
- https://en.wikipedia.org/wiki/Web-based_SSH
- https://github.com/tsl0922/ttyd
- https://goteleport.com/
- https://www.bastillion.io/features.html
- https://github.com/liftoff/GateOne
- https://github.com/maxmcd/webtty
- https://guacamole.apache.org/
- https://cockpit-project.org/
- https://zero.pritunl.com/
- https://github.com/shellinabox/shellinabox
- https://www.xtontech.com/resources/faq/pam-privileged-ssh-sessions/secure-ssh-sessions-in-a-web-browser/
- https://resources.rescale.com/introducing-in-browser-ssh/
- https://medium.com/codingtown/ssh-web-console-21e87b611674
- https://github.com/ankitvadariya/ssh-client-connection
- https://github.com/butlerx/wetty
- https://github.com/chjj/tty.js
- https://anyterm.org/
- https://www.shellvault.io/ https://pypi.org/project/webssh/
- https://old.reddit.com/r/selfhosted/comments/ep149a/webbased_ssh_client_similar_to_shell_ngn/
- 如何使用 xterm.js 创建基于 Web 的终端以通过 ssh 连接到本地网络上的系统
我意识到我把我的问题展开了一点,但希望我能够解释我的挑战是什么。我觉得我可以以某种方式利用合成事件将输入传递给基于 Web 的终端,但不幸的是,我缺乏关于这样一个系统的高级知识来将所有这些放在一起。我将不胜感激有关如何实现这些目标的任何指示。
提前致谢!