GoTTY - Поделитесь своим терминалом как веб-приложение
GoTTY - это простой инструмент командной строки, который превращает ваши CLI-инструменты в веб-приложения.
Установка
Скачать через команду:
go get https://notabug.org/aptman/GoTTY.git
Homebrew Установка
Вы можете установить GoTTY с [Homebrew] (http://brew.sh/) также.
sh $ brew install aptman/gotty
Использование
Использование: gotty [options] <command> [<arguments...>]
Запуск gotty
с вашей предпочтительной командой в качестве ее аргументов (например. gotty top
).
По умолчанию GoTTY запускает веб-сервер в порту 8080. Откройте URL-адрес в вашем веб-браузере, и вы можете увидеть текущую команду, как будто она работает на вашем терминале.
Конфигурация
Вы можете настроить параметры по умолчанию и терминал (hterm), предоставив файл конфигурации в команду «gotty». GoTTY загружает файл профиля по умолчанию `~/.gotty, когда он существует.
``
// Слушать в порту 9000 по умолчанию
port = "9000"
// Включить TSL/SSL по умолчанию
enable_tls = true
htermreference
/ Маленький шрифт и немного более синий цвет фона
background color
preferences {
font_size = 5
background_color = "rgb(16, 16, 32)"
}
``
См. файл [.gotty
] (https://github.com/yudai/gotty/blob/master/.gotty) в этом хранилище для списка вариантов конфигурации.
Варианты безопасности
По умолчанию GoTTY не позволяет клиентам отправлять какие-либо клавиатуры или команды, за исключением удаления окон. Когда вы хотите, чтобы клиенты могли написать ввод в TTY, добавьте опцию «-w». Однако принятие ввода от удаленных клиентов опасно для большинства команд. Когда вам нужно взаимодействие с TTY по некоторым причинам, подумайте о запуске GoTTY с tmux или GNU Screen и выполните свою команду на нем (подробнее см. раздел «Сотрудничество с несколькими клиентами»).
Чтобы ограничить доступ клиентов, вы можете использовать опцию -c
, чтобы включить базовую аутентификацию. С этой опцией клиенты должны ввести указанное имя пользователя и пароль для подключения к серверу GoTTY. Обратите внимание, что кредентика будет передаваться между сервером и клиентами в простом тексте. Для более строгой аутентификации рассмотрим аутентификацию SSL/TLS-клиента, описанную ниже.
Вариант r
- это немного более случайный способ ограничить доступ. С этой опцией GoTTY генерирует случайный URL, чтобы только люди, которые знают URL, могли получить доступ к серверу.
Весь трафик между сервером и клиентами НЕ зашифрован по умолчанию. При отправке секретной информации через GoTTY мы настоятельно рекомендуем вам использовать опцию -t
, которая позволяет TLS/SSL на сессии. По умолчанию GoTTY загружает корт и ключевые файлы, размещенные на ~/.gotty.crt
и ~/.gotty.key
. Вы можете переписать эти файловые пути с помощью опций -tls-crt
и -tls-key
. Когда вам нужно создать самоподписанный файл сертификации, вы можете использовать команду opensl
.
sh opensl req -x509 -nodes -days 9999 -newkey rsa:2048 -keyout ~/.gotty.key -out ~/.gotty.crt
(NOTE: Для Safari пользователей, смотрите [how to enable self-signed certificates for WebSockets] (http://blog.marcon.me/post/24874118286/secure-websockets-safari) при использовании самоподписываемых сертификатов)
Для дополнительной безопасности вы можете использовать аутентификацию SSL/TLS-клиента, предоставляя файл сертификата CA на опцию -tls-ca-crt
(этот параметр требует -t
или -
Обмен с несколькими клиентами
GoTTY запускает новый процесс с данной командой, когда новый клиент подключается к серверу. Это означает, что пользователи не могут делиться одним терминалом с другими по умолчанию. Тем не менее, вы можете использовать терминальные мультиплексеры для обмена одним процессом с несколькими клиентами.
Например, вы можете начать новую сессию tmux под названием gotty
с командой top
ниже.
sh $ gotty tmux new -A -s gotty top
Эта команда не позволяет клиентам отправлять клавиатуры, однако вы можете прикрепить сеанс с вашего локального терминала и запустить операции, такие как переключение режима команды top
. Чтобы подключиться к сеансу tmux из вашего терминала, вы можете использовать следующую команду.
sh $ tmux new - A -s gotty
Используя терминальные мультиплексеры, вы можете контролировать свой терминал и позволить клиентам просто увидеть ваш экран.
Игра с Docker
Когда вы хотите создать запертую среду для каждого клиента, вы можете использовать контейнеры Docker:
sh $ gotty -w docker run -it -rm
Развитие
Вы можете построить бинарный с использованием следующих команд. Windows сейчас не поддерживается. go1.9 требуется.
# Установка инструментов
go get github.com/jteeuwen/go-bindata/...
go get github.com/tools/godep
# Строить
сделать
Для создания фронтендной части (JS-файлы и другие статические файлы) необходимо npm
.
Альтернативы
Клиент командной строки
Terminal/SSH на веб-браузерах
[Secure Shell (Chrome App)] (https://chrome.google.com/webstore/detail/secure-shell/pnhechapfaindjhompbnflcldabbghjo): Если вы пользователь хрома и нуждаетесь в «настоящем» клиенте SSH в вашем веб-браузере, возможно, приложение Secure Shell - это то, что вы хотите.
[Wetty] (https://github.com/krishnasrinivas/wetty): Веб-терминал на основе узла (SSH/login)
[ttyd] (https://tsl0922.github.io/ttyd): C порт GoTTY с поддержкой CJK и IME
Terminal Sharing
(http://tmate.io/): Forked-Tmux based Terminal-Terminal sharing
[termshare] (https://termsha.re): Terminal-Terminal sharing through a HTTP-сервер