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  Использование: 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
Спасибо этим замечательным людям (смайлики):
Этот проект соответствует спецификации всех участников. Любые пожертвования приветствуются!
