【发布时间】:2011-04-23 07:06:58
【问题描述】:
我知道有一个使用 WebSockets (http://novnc.com) 的 VNC 实现,但这仍然需要一个服务器。我希望创建一个简单的客户端 JavaScript(无 Flash)连接到运行 SSH 的端口。我猜 WebSockets 是唯一的方法,因为它使用 TCP。任何示例代码?还有什么办法吗?
【问题讨论】:
标签: javascript browser tcp ssh websocket
我知道有一个使用 WebSockets (http://novnc.com) 的 VNC 实现,但这仍然需要一个服务器。我希望创建一个简单的客户端 JavaScript(无 Flash)连接到运行 SSH 的端口。我猜 WebSockets 是唯一的方法,因为它使用 TCP。任何示例代码?还有什么办法吗?
【问题讨论】:
标签: javascript browser tcp ssh websocket
是的,你可以
在你的服务器上安装 SSH 服务器
编写一个使用 SSH 的服务器端程序(可以是 PHP) 后台客户端
在 SSH 客户端(可能与 SSH 服务器位于同一服务器中)和互联网另一端的 Web 浏览器中的 JavaScript 程序之间重定向消息。
该服务器端程序仅充当邮递员,浏览器中的 java 脚本程序只是用户和服务器程序之间的另一个邮递员。
(SSH 服务器)(SSH 客户端)(PHP 例如)(JavaScript)
另外不要忘记,在 JavaScript 程序中可以使用 Ajax 以获得更好的机制。此外,SSH 客户端可能不是完全必要的,因为 PHP 服务器端程序可以直接连接到 SSH 服务器
【讨论】:
绝对可以使用具有完整网络支持的 Linux 模拟器,例如出色的 OpenRISC 模拟器 jor1k。
请注意,我创建了 browser-tools.net,这是来自多个不同项目的浏览器内工具的集合。
【讨论】:
对于那些仍在搜索的人,paramikojs 可能是答案。
我目前遇到了类似的问题:我需要一个 SSH JS 客户端实现,并且我需要它获得 BSD 许可。唉 paramikojs 似乎是 GPL 许可的。
【讨论】:
抱歉,鉴于您的限制(仅限客户端 Javascript),无法连接到普通的旧 SSH 服务器。
WebSockets 不是普通的 TCP。它是一种框架协议,在客户端和服务器之间进行类似 HTTP 的握手,包括原始策略。
Flash 可以建立普通的 TCP 连接,但它也有源策略强制执行。它这样做的方式是在端口 843 上连接到同一台服务器,并请求一个包含原始策略的特殊 XML 文件。 如果您愿意稍微放松您的约束,以便您愿意在服务器(任何服务器)或客户端上运行通用 WebSockets 到 TCP 代理,那么您可以做您想做的事情。 noVNC 包含一个 C 和 python WebSockets 到 TCP 代理:http://github.com/kanaka/noVNC/tree/master/utils/。
您可能会觉得有用的其他信息:
当前 WebSocket 草案:https://datatracker.ietf.org/doc/html/draft-hixie-thewebsocketprotocol-76
此处描述了运行闪存策略服务器(带有 socat 的 Linux/UNIX)的简单(不安全)方式:http://github.com/kanaka/noVNC/blob/master/docs/flash_policy.txt
有关闪存策略文件的更多信息:http://code.google.com/p/doctype/wiki/ArticleFlashSecurity
【讨论】:
你可以看看serfish。这是访问 SSH 服务器的解决方案。但是,如果您将 Web 应用程序托管在与 ssh 相同的服务器上,还有其他解决方案,例如 shell in a box。
【讨论】: