GitHub — sorenisanerd / gotty на webdesignernews.com

Со страницы выпуска

Вы можете загрузить последний стабильный двоичный файл со страницы Releases. Обратите внимание, что выпуск с пометкой Предварительный выпуск создан для целей тестирования, которое может включать нестабильные или критические изменения. Загрузите выпуск с пометкой «Последний выпуск» для стабильной сборки.

(Файлы с именем darwin_amd64 предназначены для пользователей Mac OS X)

Установка Homebrew

Вы также можете установить GoTTY с Homebrew.

 $ brew install sorenisanerd / gotty / gotty 

получить Установка (разработка)

Если у вас есть языковая среда Go, вы можете установить GoTTY с помощью команды go get . Однако эта команда создает двоичный файл из последней основной ветки, которая может включать нестабильные или критические изменения. GoTTY требует go1.9 или более поздней версии.

 $ go get github.com/sorenisanerd/gotty[19459013visible
<div class = "snippet-clipboard-content относительно позиции" data-snippet-clipboard-copy-content = "Использование: gotty [options] [] ">
  Использование: gotty [options]  []
 

Запустите gotty указав предпочитаемую команду в качестве аргументов (например, gotty top ).

По умолчанию GoTTY запускает веб-сервер на порту 8080. Откройте URL-адрес в своем веб-браузере, и вы увидите выполняющуюся команду, как если бы она выполнялась на вашем терминале.

Параметры

 - значение адреса, -значение IP-адреса для прослушивания (по умолчанию:   « 0.0.0.0 »  ) [ $ GOTTY_ADDRESS ]
   --port value, -p value Номер порта для liten (по умолчанию:   « 8080 »  ) [ $ GOTTY_PORT ]
   --path значение, -m значение Базовый путь (по умолчанию:   « / »  ) [ $ GOTTY_PATH ]
   --permit-write, -w Разрешить клиентам писать в TTY (БУДЬТЕ ОСТОРОЖНЫ) (по умолчанию: false) [ $ GOTTY_PERMIT_WRITE ]
   --credential value, -c value Credential  for  Basic Authentication (ex: user: pass, default disabled) [ $ GOTTY_CREDENTIAL ]
   --random-url, -r Добавить случайную строку к URL-адресу (по умолчанию: false) [ $ GOTTY_RANDOM_URL ]
   --random-url-length значение Случайная длина URL (по умолчанию: 8) [ $ GOTTY_RANDOM_URL_LENGTH ]
   --tls, -t Включить TLS / SSL (по умолчанию: false) [ $ GOTTY_TLS ]
   --tls-crt значение Путь к файлу сертификата TLS / SSL (по умолчанию:   « ~ / .gotty.crt »  ) [ $ GOTTY_TLS_CRT ]
   --tls-key значение Путь к файлу ключей TLS / SSL (по умолчанию:   « ~ / .gotty.key »  ) [ $ GOTTY_TLS_KEY ]
   --tls-ca-crt значение Файл сертификата TLS / SSL CA  для  сертификатов клиентов (по умолчанию:   " ~ / .gotty.ca.crt "  ] ) [ $ GOTTY_TLS_CA_CRT ]
   --index значение Пользовательский файл index.html [ $ GOTTY_INDEX ]
   --title-format value Формат заголовка окна браузера (по умолчанию:   " {{.command}} @ {{.hostname}} "  ) [ $ GOTTY_TITLE_FORMAT ]
   --reconnect Включить повторное подключение (по умолчанию: false) [ $ GOTTY_RECONNECT ]
   --reconnect-time значение Время повторного подключения (по умолчанию: 10) [ $ GOTTY_RECONNECT_TIME ]
   --max-connection value Максимальное соединение с gotty (по умолчанию: 0) [ $ GOTTY_MAX_CONNECTION ]
   --once Принимать только одного клиента и  выходить из  при отключении (по умолчанию: false) [ $ GOTTY_ONCE ]
   --timeout значение Время ожидания в секундах  для  ожидания клиента (0 для отключения) (по умолчанию: 0) [ $ GOTTY_TIMEOUT ]
   --permit-arguments Разрешить клиентам отправлять  команду  строковые аргументы  в  URL (например, http://example.com:8080/?arg=AAA ] &  arg = BBB) (по умолчанию: false) [ $ GOTTY_PERMIT_ARGUMENTS ]
   --width значение Статическая ширина экрана, 0 (по умолчанию) означает динамическое изменение размера (по умолчанию: 0) [ $ GOTTY_WIDTH ]
   --height значение Статическая высота экрана, 0 (по умолчанию) означает динамическое изменение размера (по умолчанию: 0) [ $ GOTTY_HEIGHT ]
   --ws-origin значение Регулярное выражение, которое соответствует исходным URL-адресам, принимаемым WebSocket. Запросы на другое происхождение по умолчанию недопустимы [ $ GOTTY_WS_ORIGIN ]
   --term value Имя терминала для использования в браузере, одно из xterm или hterm. (по умолчанию:   « xterm »  ) [ $ GOTTY_TERM ]
   --enable-webgl Включить средство визуализации WebGL (по умолчанию: false) [ $ GOTTY_ENABLE_WEBGL ]
   --close-signal value Сигнал, отправляемый процессу  command когда gotty закрывает его (по умолчанию: SIGHUP) (по умолчанию: 1) [ $ GOTTY_CLOSE_SIGNAL ]
   --close-timeout значение Время  в  секундах для принудительного  уничтожения  процесса после отключения клиента (по умолчанию: -1) (по умолчанию: -1) [ $ GOTTY_CLOSE_TIMEOUT  ]
   --config значение Путь к файлу конфигурации (по умолчанию:   " ~ / .gotty "  ) [ $ GOTTY_CONFIG ]
   --help, -h show  help  (по умолчанию: false)
   --version, -v распечатать версию (по умолчанию: false) 

Файл конфигурации

Вы можете настроить параметры по умолчанию и свой терминал (hterm), предоставив файл конфигурации команде gotty . GoTTY по умолчанию загружает файл профиля в ~ / .gotty если он существует.

  // По умолчанию слушаем порт 9000
порт = "9000"

// Включить TSL / SSL по умолчанию
enable_tls = true

// настройки hterm
// Меньший шрифт и немного более синий цвет фона
предпочтения {
    font_size = 5
    background_color = "rgb (16, 16, 32)"
}
 

Список параметров конфигурации см. В файле .gotty в этом репозитории.

Параметры безопасности

По умолчанию GoTTY не позволяет клиентам отправлять какие-либо нажатия клавиш или команды, кроме изменения размера окна терминала. Если вы хотите разрешить клиентам записывать ввод в TTY, добавьте параметр -w . Однако прием ввода от удаленных клиентов опасен для большинства команд. Если вам по каким-то причинам необходимо взаимодействие с TTY, подумайте о запуске GoTTY с tmux или GNU Screen и запустите на нем свою команду (подробности см. В разделе «Совместное использование с несколькими клиентами»).

Чтобы ограничить доступ клиентов, вы можете использовать параметр -c чтобы включить базовую аутентификацию. С помощью этой опции клиентам необходимо ввести указанные имя пользователя и пароль для подключения к серверу GoTTY. Обратите внимание, что учетные данные будут передаваться между сервером и клиентами в виде обычного текста. Для более строгой аутентификации рассмотрите аутентификацию сертификата клиента SSL / TLS, описанную ниже.

Параметр -r - более простой способ ограничения доступа. С этой опцией GoTTY генерирует случайный URL-адрес, так что только люди, знающие URL-адрес, могут получить доступ к серверу.

По умолчанию весь трафик между сервером и клиентами НЕ шифруется. Когда вы отправляете секретную информацию через GoTTY, мы настоятельно рекомендуем вам использовать параметр -t который включает TLS / SSL в сеансе. По умолчанию GoTTY загружает файлы crt и ключей, размещенные в ~ / .gotty.crt и ~ / .gotty.key . Вы можете перезаписать эти пути к файлам с помощью параметров - tls-crt и - tls-key . Если вам нужно создать самоподписанный файл сертификации, вы можете использовать команду openssl .

 openssl req -x509 -nodes -days 9999 -newkey rsa: 2048 -keyout  ~  /. Gotty.key -out  ~  /. Gotty.crt 

(ПРИМЕЧАНИЕ. Для Safari см., Как включить самозаверяющие сертификаты для WebSockets при использовании самозаверяющих сертификатов)

Для дополнительной безопасности можно использовать аутентификацию сертификата клиента SSL / TLS, указав файл сертификата CA для параметра - tls-ca-crt (для этого параметра требуется -t или - tls должен быть установлен). Этот параметр требует, чтобы все клиенты отправляли действительные сертификаты клиентов, подписанные указанным центром сертификации.

Совместное использование с несколькими клиентами

GoTTY запускает новый процесс с заданной командой, когда новый клиент подключается к серверу. Это означает, что по умолчанию пользователи не могут использовать один терминал совместно с другими. Однако вы можете использовать терминальные мультиплексоры для совместного использования одного процесса с несколькими клиентами.

Экран

После установки экрана GNU запустите новый сеанс с помощью screen -S name-for-session и подключитесь к нему с помощью gotty в другом окне / вкладке терминала через screen -x name-for- сессия . Все команды и действия, выполняемые в первой вкладке / окне терминала, теперь будут транслироваться с помощью gotty.

Tmux

Например, вы можете начать новый сеанс tmux с именем gotty с помощью команды top с помощью приведенной ниже команды.

 $ gotty tmux new -A -s gotty top 

Эта команда не позволяет клиентам отправлять нажатия клавиш, однако вы можете подключиться к сеансу со своего локального терминала и выполнять такие операции, как переключение режима команды top . Чтобы подключиться к сеансу tmux с вашего терминала, вы можете использовать следующую команду.

Используя терминальные мультиплексоры, вы можете контролировать свой терминал и позволить клиентам просто видеть ваш экран.

Быстрый обмен через tmux

Чтобы поделиться своим текущим сеансом с другими с помощью сочетания клавиш, вы можете добавить строку, как показано ниже, в свой .tmux.conf .

  # Запустить GoTTY в новом окне с помощью C-t
клавиша привязки C-t новое окно "gotty tmux attach -t` tmux display -p '# S'` "
 

Игра с Docker

Если вы хотите создать изолированную среду для каждого клиента, вы можете использовать контейнеры Docker, как показано ниже:

 $ gotty -w docker run -it --rm busybox 

Разработка

Вы можете создать двоичный файл, используя следующие команды. Windows сейчас не поддерживается. go1.9 не требуется.

   #  Установить инструменты 
перейти и получить github.com/jteeuwen/go-bindata / ...
перейти и получить github.com/tools/godep

  #  Сборка 
марка 

Для сборки клиентской части (файлов JS и других статических файлов) вам потребуется npm .

Архитектура

GoTTY использует xterm.js и hterm для запуска терминала на основе JavaScript в веб-браузерах. Сам GoTTY предоставляет сервер websocket, который просто ретранслирует вывод TTY клиентам, принимает ввод от клиентов и пересылает его TTY. Идея hterm + websocket вдохновлена ​​Wetty.

Альтернативы

Клиент командной строки

  • gotty-client: если вы хотите подключиться к серверу GoTTY со своего терминала

Терминал / SSH в веб-браузерах

  • Secure Shell (приложение Chrome): если вы являетесь пользователем Chrome и вам нужен «настоящий» SSH-клиент в своем веб-браузере, возможно, вам нужно приложение Secure Shell
  • Wetty: Веб-терминал на основе узла (SSH / вход)
  • ttyd: порт C для GoTTY с поддержкой CJK и IME

Совместное использование терминала

  • tmate: Совместное использование терминала на основе Forked-Tmux
  • общие условия: совместное использование терминала и терминала через HTTP-сервер
  • tmux: сам Tmux также поддерживает совместное использование TTY через SSH)

Лицензия MIT

Спасибо этим замечательным людям (смайлики):

Этот проект соответствует спецификации всех участников. Любые пожертвования приветствуются!