Я знаю, что существует реализация VNC с использованием WebSockets (http://novnc.com), но для этого все еще требуется сервер. Я ищу для создания простого клиентского JavaScript (только Flash) подключение к порту с SSH. Я предполагаю, что WebSockets - единственный способ пойти, поскольку это делает TCP. Любой пример кода? Любой другой способ?
Можно ли подключиться к SSH с помощью JavaScript?
Ответ 1
Извините, учитывая ваши ограничения (только 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: http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76
-
Здесь описывается простой (небезопасный) способ запуска сервера флэш-политики (Linux/UNIX с socat): http://github.com/kanaka/noVNC/blob/master/docs/flash_policy.txt
-
Подробнее о файле флэш-политики: http://code.google.com/p/doctype/wiki/ArticleFlashSecurity
Ответ 2
Для тех, кто все еще ищет, paramikojs может быть ответом.
В настоящее время у меня есть аналогичная проблема: мне нужна реализация на стороне клиента SSH JS, и мне нужно, чтобы она лицензировалась BSD. Увы, парамикойс, похоже, лицензирован GPL.
Ответ 3
Вы можете посмотреть serfish. Это решение для доступа к SSH-серверу. Но если вы размещаете свое веб-приложение на том же сервере, что и ваш ssh, в нем есть другие решения, такие как shell.
Ответ 4
Это определенно возможно с использованием эмулятора Linux с полной поддержкой сети, такой как большой эмулятор OpenRISC jor1k.
Обратите внимание, что я создал browser-tools.net, набор встроенных инструментов из нескольких проектов.