So che esiste un'implementazione di VNC tramite WebSockets (http://novnc.com) ma che richiede comunque un server. Sto cercando di creare una semplice connessione JavaScript (solo Flash) lato client su una porta che esegue SSH. Suppongo che WebSockets sia l'unico modo per farlo dal momento che funziona con TCP. Qualche codice di esempio? Ogni altro modo?È possibile connettersi a SSH utilizzando JavaScript?
risposta
Siamo spiacenti, dati i vincoli (solo JavaScript sul lato client), non è possibile connettersi a un semplice server SSH vecchio.
WebSockets non è semplice TCP. Si tratta di un protocollo con frame con un handshake simile a HTTP tra client e server che include criteri di origine.
Flash può eseguire semplici connessioni TCP, ma ha anche l'applicazione dei criteri di origine. Il modo in cui lo fa è creare una connessione allo stesso server sulla porta 843 e richiedere un file XML speciale che contenga la politica di origine. Se sei disposto a rilassare leggermente i tuoi vincoli in modo tale che sei disposto a eseguire un WebSocket generico sul proxy TCP su un server (qualsiasi server) o sul client, allora puoi fare quello che vuoi fare. noVNC include un C e python WebSockets al proxy TCP: http://github.com/kanaka/noVNC/tree/master/utils/.
Altre informazioni che potrebbe risultare utile:
WebSocket attuale progetto: http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76
semplice modo (non sicuro) di esecuzione di un server dei criteri flash (Linux/UNIX con socat) è descritto qui: http://github.com/kanaka/noVNC/blob/master/docs/flash_policy.txt
Maggiori informazioni sul file dei criteri di infiammabilità: http://code.google.com/p/doctype/wiki/ArticleFlashSecurity
Puoi dare un'occhiata a serfish. È una soluzione per accedere a un server SSH. Ma se stai ospitando la tua applicazione web sullo stesso server di ssh, ci sono altre soluzioni come shell in a box.
Serfish utilizza un server per eseguire il tunnel dei comandi digitati nel browser sull'host ssh. Allo stesso modo, shellinabox deve essere eseguito sull'host affinché il front-end browser-terminal funzioni. Esiste comunque la possibilità di emulare il terminale sul lato client utilizzando solo JS senza scrivere alcun codice lato server (o ssh host)? – pathikrit
Per quelli ancora alla ricerca, paramikojs potrebbe essere la risposta.
Attualmente sto avendo un problema simile: ho bisogno di un'implementazione lato client JS SSH, e ho bisogno che sia concesso in licenza BSD. Ahimè, i paramikojs sembrano avere licenza GPL.
Dal [readme] (https://github.com/mimecuvalo/paramikojs): * Prima di chiedere, questo non funziona su normali pagine web. * – Tamlyn
È sicuramente possibile utilizzare un emulatore Linux con supporto di rete completo come il grande emulatore OpenRISC jor1k.
Nota che ho creato browser-tools.net, una raccolta di strumenti nel browser dal numero di diversi progetti.
La risposta è cambiata nel corso di due anni? Mi piacerebbe sapere se qualcosa di nuovo è venuto fuori! – Danny
Non per semplici app web. Tuttavia, le app in pacchetto di Chrome ora supportano socket TCP/UDP non elaborati: https://developer.chrome.com/apps/app_network.html Ad esempio, hanno un client telnet di esempio: https://github.com/GoogleChrome/chrome- app-samples/tree/master/telnet È possibile estendere l'esempio telnet per aggiungere crittografia e gestione delle chiavi per creare un'app ssh. Ma questo sarebbe limitato alle app in pacchetto di Chrome e non a un'app web generica. – kanaka
Aggiungendo a quanto sopra, in questi giorni Chrome offre anche un client SSH come app packaged: https://chrome.google.com/webstore/detail/secure-shell/pnhechapfaindjhompbnflcldabbghjo – BHSPitMonkey