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