В предыдущей статье я написал статью "Все доступно API", этот проект предназначен для вывода результатов выполнения некоторых скриптов на веб-страницу.
Но есть еще много возможностей для улучшения. Например, пользовательский интерфейс может быть лучше, и насколько хорошо иметь возможность выполнять интерактивные команды. В конце концов, если подумать, это не его окончательная форма. веб-версия Терминала?
Затем я изначально подумал о преобразовании проекта, но, думая об этом, если я хочу преобразовать его в веб-версию Терминала, должна быть реализация с открытым исходным кодом.
Поэтому я начал искать и, наконец, нашел несколько хороших.
Web Terminal
- ттыд:GitHub.com/too little0922/tiantongyuan…, инструмент, который может перевести командную строку в Интернет для выполнения, основанный на C.
- получил:github.com/yudai/gotty, как и ttyd, но написан на Go, но последнее обновление было в 2017 году, и, по оценкам, он находится в аварийном состоянии.
- мокрый:GitHub.com/Батлер Х/мокрый…, основанный на Node.js, вы также можете передать командную строку в веб для выполнения, но вам нужно войти на основе SSH, который фактически является веб-версией SSH-терминала.
- Secure Shell (приложение Chrome): подключаемый модуль браузера Google, который также предоставляет веб-терминал SSH.
- друг:tmate.io/, модифицированный из tmux для поддержки общего доступа к терминалу.
После некоторых испытаний я лично рекомендую ttyd, другие либо основаны на SSH, либо не очень просты в использовании, либо не обслуживаются.
Ниже я расскажу о простом использовании ttyd.
Установить
Установка на самом деле очень проста, я использую Mac, поэтому я могу установить его напрямую с помощью HomeBrew:
brew install ttyd
Если вы используете Windows или Linux, они по-прежнему могут поддерживаться.Для установки см.GitHub.com/too little0922/tiantongyuan…глава.
использовать
ttyd поддерживает множество функциональных конфигураций, полная команда выглядит следующим образом:
ttyd is a tool for sharing terminal over the web
USAGE:
ttyd [options] <command> [<arguments...>]
VERSION:
1.6.3
OPTIONS:
-p, --port Port to listen (default: 7681, use `0` for random port)
-i, --interface Network interface to bind (eg: eth0), or UNIX domain socket path (eg: /var/run/ttyd.sock)
-c, --credential Credential for Basic Authentication (format: username:password)
-u, --uid User id to run with
-g, --gid Group id to run with
-s, --signal Signal to send to the command when exit it (default: 1, SIGHUP)
-a, --url-arg Allow client to send command line arguments in URL (eg: http://localhost:7681?arg=foo&arg=bar)
-R, --readonly Do not allow clients to write to the TTY
-t, --client-option Send option to client (format: key=value), repeat to add more options
-T, --terminal-type Terminal type to report, default: xterm-256color
-O, --check-origin Do not allow websocket connection from different origin
-m, --max-clients Maximum clients to support (default: 0, no limit)
-o, --once Accept only one client and exit on disconnection
-B, --browser Open terminal with the default system browser
-I, --index Custom index.html path
-b, --base-path Expected base path for requests coming from a reverse proxy (eg: /mounted/here)
-P, --ping-interval Websocket ping interval(sec) (default: 300)
-6, --ipv6 Enable IPv6 support
-S, --ssl Enable SSL
-C, --ssl-cert SSL certificate file path
-K, --ssl-key SSL key file path
-A, --ssl-ca SSL CA file path for client certificate verification
-d, --debug Set log level (default: 7)
-v, --version Print the version and exit
-h, --help Print this text and exit
Visit https://github.com/tsl0922/ttyd to get more information and report bugs.
Как видите, вы можете использовать -p для указания работающего порта, использовать -c для указания пароля для входа и так далее.
основное использование
Давайте попробуем. Самые основные команды следующие:
ttyd bash
Это запускает веб-версию bash со следующими результатами:
Это показывает, что он работает на 7681, тогда мы можем открытьhttp://localhost:7681/, вы можете запустить команду напрямую:
Очень шелковистый.
Я видел, что за ним стоит протокол передачи WebSocket, так что стабильность по-прежнему гарантирована:
Конечно, мы также можем использовать наш любимый Shell, например zsh, вместо bash, команда выглядит следующим образом:
ttyd zsh
В данном случае Shell в браузере — это zsh:
привязать порт
Конечно, мы также можем изменить порт, например, 8000, вы можете использовать следующую команду:
ttyd -p 8000 zsh
Чтобы ttyd мог запустить службу HTTP на порту 8000, мы открываемhttp://localhost:8000/Команду можно выполнить.
Basic Auth
Конечно, выставлять его напрямую не очень безопасно.Мы можем установить Basic Auth и использовать параметр -c для указания имени пользователя и пароля.Формат такой:username:password
, например, указываем, что логин и пароль оба admin, тогда команда пишется так:
ttyd -p 8000 -c admin:admin zsh
открыть вот такhttp://localhost:8000/После этого необходимо ввести логин и пароль для входа:
Автоматически открывать браузер
Мы также можем использовать команду -B для автоматического открытия браузера:
ttyd -p 8000 -B zsh
После запуска автоматически откроется браузер по умолчанию.http://localhost:8000/, нам не нужно снова вводить URL, это очень удобно.
Поэтому приведенную выше команду можно даже превратить в псевдоним, например:
alias webcmd="ttyd -p 8000 -B zsh";
Введите вот такwebcmd
Вы можете легко открыть веб-версию командной строки.
Поддержка докера
Кроме того, ttyd также предоставляет образ Docker. Если вы не хотите его устанавливать, вы можете запустить Docker напрямую. Например, вы можете запустить его на 7681:
docker run -it --rm -p 7681:7681 tsl0922/ttyd
Но это фактически выставляет командную строку внутри контейнера.Если вы хотите выставить командную строку хоста, вам нужно смонтировать диск:
SSH-терминал
ttyd также поддерживает терминал SSH, команда выглядит следующим образом:
ttyd login
В этом случае после открытия браузера требуется вход в SSH, и перед использованием можно использовать правильное имя пользователя и пароль SSH.
поддержка SSL
Если вы хотите настроить поддержку SSL, то есть для поддержки HTTPS, вы можете самостоятельно сгенерировать сертификат и добавить соответствующие параметры для запуска ttyd.Ссылка на ссылку:GitHub.com/too little0922/tiantongyuan….
Более
Вышеупомянутое использование может в основном удовлетворить повседневные потребности.Если вы хотите узнать больше об использовании, вы можете обратиться к его Wiki, ссылка:GitHub.com/too little0922/tiantongyuan….
общедоступная сеть
Конечно, если мы хотим выставить его в общедоступную сеть, мы также можем сотрудничать с Ngrok.Например, ttyd работает на порту 8000, и я могу использовать Ngrok для его раскрытия:
ngrok http 8000
Результаты приведены ниже:
Чтобы я мог получить доступ к этому терминалу через указанный URL, например, здесь я могу использовать11b4-2404-f801-8050-3-bf-00-55.ngrok.io/для доступа к моему терминалу:
Очень хорошо!
Суммировать
Ну а вышеописанное — базовое использование ttyd, с его помощью мы легко можем передать терминал на определенной машине в Сеть для выполнения, что очень удобно и полезно.
Для более интересного контента, пожалуйста, обратите внимание на мои публичные аккаунты «Coder of Attack» и «Cui Qingcai丨Jing Mi».