2010-10-09 5 views
23

Ich weiß, es gibt eine Implementierung von VNC mit WebSockets (http://novnc.com), aber das erfordert immer noch einen Server. Ich möchte eine einfache clientseitige JavaScript-Verbindung (kein Flash) zu einem Port herstellen, auf dem SSH ausgeführt wird. Ich rate WebSockets ist der einzige Weg zu gehen, da es TCP tut. Irgendein Beispielcode? Irgendein anderer Weg?Kann ich mit JavaScript eine Verbindung zu SSH herstellen?

Antwort

15

Entschuldigung, angesichts Ihrer Einschränkungen (nur clientseitiges JavaScript) gibt es keine Möglichkeit, eine Verbindung zu einem einfachen alten SSH-Server herzustellen.

WebSockets ist nicht einfach TCP. Es handelt sich um ein gerahmtes Protokoll mit einem HTTP-ähnlichen Handshake zwischen dem Client und dem Server, der die Herkunftsrichtlinien enthält.

Flash kann einfache TCP-Verbindungen herstellen, aber es hat auch die Erzwingung von Ursprungsrichtlinien. Dies geschieht, indem eine Verbindung zum selben Server über Port 843 hergestellt wird und nach einer speziellen XML-Datei gefragt wird, die die Ursprungsrichtlinie enthält. Wenn Sie bereit sind, Ihre Einschränkungen etwas zu lockern, so dass Sie bereit sind, einen generischen WebSockets zu TCP-Proxy entweder auf einem Server (jedem Server) oder auf dem Client auszuführen, dann können Sie tun, was Sie tun möchten. NoVNC enthält ein C und Python WebSockets zu TCP-Proxy: http://github.com/kanaka/noVNC/tree/master/utils/.

Weitere Informationen finden Sie vielleicht nützlich:

+1

Hat sich die Antwort über zwei Jahre geändert? Ich würde gerne wissen, ob etwas Neues kam! – Danny

+2

Nicht für einfache Web-Anwendungen. Chrome-basierte Apps unterstützen jetzt jedoch rohe TCP/UDP-Sockets: https://developer.chrome.com/apps/app_network.html Zum Beispiel haben sie einen Beispiel-Telnet-Client: https://github.com/GoogleChrome/chrome- app-samples/tree/master/telnet Sie könnten das Telnet-Beispiel erweitern, um die Verschlüsselung und Schlüsselverwaltung hinzuzufügen, um eine ssh-App zu erstellen. Dies wäre jedoch auf Chrome-Apps und nicht auf eine generische Web-App beschränkt. – kanaka

+2

Zusätzlich zu den oben genannten Funktionen bietet Chrome einen SSH-Client jetzt auch als Paket-App an: https://chrome.google.com/webstore/detail/secure-shell/pnhechapfaindjhompbnflcldabbghjo – BHSPitMonkey

3

Sie können einen Blick auf serfish werfen. Es ist eine Lösung für den Zugriff auf einen SSH-Server. Wenn Sie jedoch Ihre Webanwendung auf demselben Server wie Ihr ssh hosten, gibt es andere Lösungen wie shell in a box.

+0

Serfish verwendet einen Server, um im Browser eingegebene Befehle an den ssh-Host zu tunneln. Shellinabox muss ebenfalls auf dem Host ausgeführt werden, damit das Front-End-Browser-Terminal funktioniert. Gibt es überhaupt eine Möglichkeit, das Terminal auf der Client-Seite zu emulieren, indem nur JS verwendet wird, ohne einen Side-Code für den Server (oder SSH-Host) zu schreiben? – pathikrit

4

Für diejenigen, die immer noch suchen, paramikojs könnte die Antwort sein.

Ich habe derzeit ein ähnliches Problem: Ich brauche eine SSH JS clientseitige Implementierung, und ich brauche es BSD lizenziert. Alas paramikojs scheint GPL lizenziert zu sein.

+1

Aus dem [readme] (https://github.com/mimecuvalo/paramikojs): * Bevor Sie fragen, funktioniert dies nicht auf regulären Webseiten. * – Tamlyn

1

Es ist definitiv möglich, einen Linux-Emulator mit voller Netzwerkunterstützung wie den großen OpenRISC-Emulator jor1k zu verwenden.

Beachten Sie, dass ich browser-tools.net, eine Sammlung von In-Browser-Tools aus einer Reihe von verschiedenen Projekten erstellt habe.