Утилита ttyd

Данная утилита доступна на 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 — вы можете почитать про дополнительные опции.