2010-10-09 53 views
23

我知道有一個使用WebSockets(http://novnc.com)的VNC的實現,但仍然需要一個服務器。我期待創建一個簡單的客戶端JavaScript(無Flash)連接到運行SSH的端口。我猜測WebSockets是唯一能夠實現TCP的方法。任何示例代碼?任何其他方式?是否可以使用JavaScript連接到SSH?

回答

15

對不起,由於您的限制(僅限客戶端Javascript),無法連接到普通的舊式SSH服務器。

WebSockets不是普通的TCP。它是一個框架協議,在包含源策略的客戶端和服務器之間進行類似於HTTP的握手。

Flash可以建立普通的TCP連接,但它也具有源策略執行。這樣做的方式是通過在端口843上連接到同一臺服務器並請求包含源策略的特殊XML文件。 如果你願意稍微放寬你的約束,以便你願意在服務器(任何服務器)或客戶端上運行一個通用的WebSocket到TCP代理,那麼你可以做你想做的事情。 noVNC包含一個C和python WebSocket到TCP代理:http://github.com/kanaka/noVNC/tree/master/utils/

其他信息可能對您有用:

+1

這個問題的答案在兩年內有所改變嗎?我很想知道是否有新的東西出現! – Danny 2012-09-18 08:12:16

+2

不適合普通的網絡應用。但是,Chrome打包的應用程序現在支持原始TCP/UDP套接字:https://developer.chrome.com/apps/app_network.html例如,他們有一個示例telnet客戶端:https://github.com/GoogleChrome/chrome- app-samples/tree/master/telnet你可以擴展telnet例子來添加加密和密鑰管理來創建一個ssh應用程序。但是這僅限於Chrome打包的應用程序,而不是通用的網絡應用程序。 – kanaka 2012-09-18 13:34:35

+2

除此之外,Chrome還提供SSH客戶端作爲打包應用:https://chrome.google.com/webstore/detail/secure-shell/pnhechapfaindjhompbnflcldabbghjo – BHSPitMonkey 2014-01-27 20:16:14

3

你可以看看serfish。這是訪問SSH服務器的解決方案。但是,如果您將您的Web應用程序託管在與ssh相同的服務器上,則還有其他解決方案,如shell in a box

+0

Serfish使用服務器將在瀏覽器中鍵入的命令傳輸到ssh主機。 shellinabox同樣需要在主機上運行,​​以便前端瀏覽器終端正常工作。無論如何,只使用JS在客戶端模擬終端而不寫任何服務器(或ssh主機)端代碼? – pathikrit 2010-10-10 01:17:42

4

對於那些仍在搜索,paramikojs可能是答案。

我目前有一個類似的問題:我需要一個SSH JS客戶端實現,我需要它是BSD許可。唉paramikojs似乎是GPL許可。

+1

從[自述文件](https://github.com/mimecuvalo/paramikojs):*在你問之前,沒有這在常規網頁上不起作用。* – Tamlyn 2014-11-04 11:07:37

1

絕對有可能使用Linux仿真器,並提供完整的網絡支持,如OpenRISC仿真器jor1k

請注意,我已經創建了browser-tools.net,這是來自多個不同項目的瀏覽器內工具的集合。

相關問題