Утилита ttyd — это простой инструмент командной строки для совместного использования терминала через Web-браузер.
Об утилите
Данная утилита доступна на github.com. Она позволяет запустить выполнение любой утилиты командной строки в браузере.
Примеры использования:
- Например, может быть удобно, запустить top, htop, или что-то подобное в браузере. В отдельной вкладке браузера вы всегда сможете посмотреть нагруженность вашего сервера.
- Или можно запустить экземпляр bash и работать в командной строке сервера в браузере. Это может быть удобно, если вы по какой-то причине не можете использовать ssh.
- И простые команды, которые при выполнении дают какой-то вывод и завершаются, можно запустить с помощью этой утилиты. Это могут быть такие команды как: ls, df, du и тому подобное. При этом, как только вы обновляете страничку, на сервере выполняется данная утилита и результат выводится в браузере.
Практика
Данная утилита состоит из одного бинарника, который можно скачать с помощью следующей команды:
$ wget -O ttyd https://github.com/tsl0922/ttyd/releases/download/1.7.3/ttyd.x86_64
Дальше даём приложению право запускаться:
$ chmod u+x ttyd
И запускаем, например bash:
$ ./ttyd bash
После запуска видим порт, на котором запустился bash. И подключаемся по ip-адресу сервера и этому порту с помощью браузера, например: httt://192.168.0.5:7681.
Эта утилита имеет ряд опций, вот некоторые из них:
- -p <port> — порт на котором мы запускаем приложение (по умолчанию 7681, можно указать 0 чтобы использовать случайный порт);
- -i <interface> — сетевой интерфейс который будет использоваться (например — eth0);
- -c <username:password> — логин и пароль, который потребуется указать в браузере (по умолчанию парольная аутентификация выключена);
- -m <max-clients> — максимальное количество клиентов;
- -o — разрешает подключаться только одному клиенту, при этом как только произойдет дисконнект (например клиент закроет вкладку браузера или перезагрузит её), то web-приложение завершит свою работу;
Приложение позволяет работать через Nginx reverse proxy и использовать TLS сертификаты. Также вы можете сделать Systemd юнит, чтобы запускать эту утилиту как службу.
На страничке https://github.com/tsl0922/ttyd/wiki — вы можете почитать про дополнительные опции.