From d9b83cee398758bc9c4f60fe0094dcc3a0661d62 Mon Sep 17 00:00:00 2001 From: Shuanglei Tao Date: Sat, 14 Mar 2020 12:53:25 +0800 Subject: [PATCH] Update to 1.6.0 --- index.html | 86 +++++++++++++++--------------------------------------- 1 file changed, 23 insertions(+), 63 deletions(-) diff --git a/index.html b/index.html index 6188b65..aa5dbf6 100644 --- a/index.html +++ b/index.html @@ -15,19 +15,19 @@

ttyd - Share your terminal over the web Build Status

-

ttyd is a simple command-line tool for sharing terminal over the web, inspired by GoTTY.

+

ttyd is a simple command-line tool for sharing terminal over the web.

screenshot

Features

Installation

Install on macOS

@@ -35,34 +35,23 @@
brew install ttyd

Install on Linux

Install on Windows

-

ttyd can be built with MSYS2 on windows, The build instructions is here.

-
- NOTE: Native windows console programs may not work correctly due to pty incompatibility issues. -
As a workaround, you can use winpty as a wrapper to invoke the windows program, eg: ttyd winpty cmd. -
-

Install on OpenWrt/LEDE

-

LEDE 17.01.0 and later:

+

Compile on Windows.

+

Install on OpenWrt

opkg install ttyd
-

If the install command fails, you can compile it yourself.

Usage

Command-line Options

ttyd is a tool for sharing terminal over the web
@@ -71,7 +60,7 @@ USAGE:
     ttyd [options] <command> [<arguments...>]
 
 VERSION:
-    1.4.0
+    1.6.0
 
 OPTIONS:
     -p, --port              Port to listen (default: 7681, use `0` for random port)
@@ -80,14 +69,17 @@ OPTIONS:
     -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)
-    -r, --reconnect         Time to reconnect for the client in seconds (default: 10)
+    -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)
+    -6, --ipv6              Enable IPv6 support
     -S, --ssl               Enable SSL
     -C, --ssl-cert          SSL certificate file path
     -K, --ssl-key           SSL key file path
@@ -98,45 +90,13 @@ OPTIONS:
 
 Visit https://github.com/tsl0922/ttyd to get more information and report bugs.
 
-

Example Usage

-

ttyd starts web server at port 7681 by default, you can use the -p option to change it, the command will be started with arguments as options. For example, run:

-
ttyd -p 8080 bash -x
-

Then open http://localhost:8080 with a broswer, you will get a bash shell with debug mode enabled.

-

More Examples:

+

Read the example usage on the wiki.

+

Browser Support

+

Modern browsers, See Browser Support.

+

Alternatives

    -
  • If you want to login with your system accounts on the web broswer, run ttyd login.
  • -
  • You can even run a none shell command like vim, try: ttyd vim, the web broswer will show you a vim editor.
  • -
  • Sharing single process with multiple clients: ttyd tmux new -A -s ttyd vim, run tmux new -A -s ttyd to connect to the tmux session from terminal.
  • -
-

SSL how-to

-

Generate SSL CA and self signed server/client certificates:

-
# CA certificate (FQDN must be different from server/client)
-openssl genrsa -out ca.key 4096
-openssl req -new -x509 -days 365 -key ca.key -out ca.crt
-# server certificate
-openssl req -newkey rsa:2048 -nodes -keyout server.key -out server.csr
-openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt
-# client certificate (the p12/pem format may be useful for some clients)
-openssl req -newkey rsa:2048 -nodes -keyout client.key -out client.csr
-openssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 02 -out client.crt
-openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
-openssl pkcs12 -in client.p12 -out client.pem -clcerts
-

Then start ttyd:

-
ttyd --ssl --ssl-cert server.crt --ssl-key server.key --ssl-ca ca.crt bash
-

You may want to test the client certificate verification with curl:

-
curl --insecure --cert client.p12[:password] -v https://localhost:7681
-

If you don't want to enable client certificate verification, remove the --ssl-ca option.

-

Docker and ttyd

-

Docker containers are jailed environments which are more secure, this is useful for protecting the host system, you may use ttyd with docker like this:

-
    -
  • Sharing single docker container with multiple clients: docker run -it --rm -p 7681:7681 tsl0922/ttyd.
  • -
  • Creating new docker container for each client: ttyd docker run -it --rm ubuntu.
  • -
-

Credits

-
    -
  • GoTTY: ttyd is a port of GoTTY to C language with many improvements.
  • -
  • Libwebsockets: is used to build the websocket server.
  • -
  • Xterm.js: is used to run the terminal emulator on the web, hterm is used previously.
  • +
  • Wetty: Node based web terminal (SSH/login)
  • +
  • GoTTY: Go based web terminal