Отказ от ответственности: я создал noVNC, поэтому мой ответ может быть сильно предвзятым; -)
Я отвечу вам второй вопрос первый:
stunnel не может напрямую использоваться noVNC.Проблема в том, что протокол WebSockets имеет первоначальное рукопожатие, похожее на HTTP, и сообщения оформляются.Кроме того, до тех пор, пока в WebSockets не добавлена поддержка двоичной полезной нагрузки, полезная нагрузка кодируется base64 прокси-сервером websockets (websockify).Добавление необходимой поддержки в stunnel было бы нетривиальным, но, безусловно, выполнимым.На самом деле noVNC выпуск # 37 является желательной функцией для добавления этой поддержки в stunnel.
Первый вопрос :
noVNC уже имеет концепциюВЕДУЩИЙ: ПОРТ через метод RFB.connect(host, port, password)
.Файл vnc_auto.html
на верхнем уровне показывает, как заставить noVNC автоматически подключаться при загрузке страницы на основе хоста, порта и пароля, указанных в качестве параметров строки запроса URL.
Однако я думаю, что вы действительно спрашиваетеКак вы получаете noVNC для подключения к альтернативным портам VNC-сервера на бэкэнде.Эта проблема не решается напрямую noVNC и websockify.Есть несколько способов решить эту проблему, и обычно он включает механизм внеполосной настройки / авторизации, так что прокси-сервер не может быть использован для запуска атак произвольными хостами.Например, в моей компании у нас есть веб-структура управления, которая интегрирует noVNC, и когда пользователь хочет подключиться к консоли, аутентифицированный вызов AJAX используется для настройки прокси-сервера для этого конкретного пользователя и системы, к которой он хочет подключиться.Наш веб-интерфейс управления является только внутренним.
Ganeti Web Manager использует аналогичную модель, и источник доступен.У них есть форк VNCAuthProxy, который имеет поддержку WebSockets.Они используют канал управления от веб-интерфейса до VNCAuthProxy для установки временного пароля, связанного с конкретным хостом сервера VNC: порт.
Также в OpenStack (Nova) интегрируется noVNC, использующий аналогичный внеполосный токен на основемодель для доступа с помощью nova-vncproxy.
Некоторые ссылки: