Skip to content
Secure Terminal Sharing
Go Shell Roff Makefile
Branch: master
Clone or download
Latest commit c5773fd Jan 26, 2020
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin Add publish-website script Jan 3, 2020
cmd Expose port for Prometheus Jan 17, 2020
docs Release Upterm 0.0.9 Jan 6, 2020
etc Release Upterm 0.0.9 Jan 6, 2020
ftests Consider client version when routing host requests Jan 26, 2020
host Consider client version when routing host requests Jan 26, 2020
io Open source `upterm` under Apache 2.0 Jan 2, 2020
memlistener Rewrite memlistener with `sync.Map` Jan 18, 2020
metrics Add metrics support to routing Jan 17, 2020
server Consider client version when routing host requests Jan 26, 2020
upterm
utils Open source `upterm` under Apache 2.0 Jan 2, 2020
vendor Bump jingweno/upterm.crypto Jan 26, 2020
.gitignore Add package-release script Jan 3, 2020
.travis.yml
Dockerfile.uptermd Expose port for Prometheus Jan 17, 2020
LICENSE Open source `upterm` under Apache 2.0 Jan 2, 2020
Makefile Reorg etc folder Jan 2, 2020
README.md Install from source only install `upterm` Jan 23, 2020
go.mod Bump jingweno/upterm.crypto Jan 26, 2020
go.sum Bump jingweno/upterm.crypto Jan 26, 2020

README.md

Upterm

Upterm is an open-source solution for sharing terminal sessions instantly with the public internet over secure tunnels.

What it's good for

  • Remote pair programming
  • Access remote computers behind NATs and firewalls
  • Remote debugging
  • <insert your creative use cases>

Installation

Mac

brew tap jingweno/upterm
brew install upterm

Standalone

upterm can be easily installed as an executable. Download the latest compiled binaries and put it in your executable path.

From source

git clone git@github.com:jingweno/upterm.git
cd upterm
GO111MODULE=on go install ./cmd/upterm/...

Quick Start

# Host a terminal session by running $SHELL
# The client's input/output is attached to the host's.
$ upterm host

# Display the ssh connection string
$ upterm session current
=== BO6NOSSTP9LL08DOQ0RG
Command:                /bin/bash
Force Command:          n/a
Host:                   uptermd.upterm.dev:22
SSH Session:            ssh bo6nosstp9ll08doq0rg:MTAuMC4xNzAuMTY0OjIy@uptermd.upterm.dev

# Open a new terminal and connect to the session
$ ssh bo6nosstp9ll08doq0rg:MTAuMC4xNzAuMTY0OjIy@uptermd.upterm.dev

# Host a session with a custom command.
# The client's input/output is attached to the host's.
$ upterm host -- docker run --rm -ti ubuntu bash

# Host a session by running 'tmux new -t pair-programming'.
# The host runs 'tmux attach -t pair-programming' after the client joins the session.
# The client's input/output is attached to this command's.
$ upterm host --force-command 'tmux attach -t pair-programming' -- tmux new -t pair-programming`,

More advanced usage is here.

Demo

asciicast

How it works

You run the upterm program and specify the command for your terminal session. Upterm starts an SSH server (a.k.a. sshd) in the host machine and sets up a reverse SSH tunnel to a Upterm server (a.k.a. uptermd). Clients connect to your terminal session over the public internet via uptermd using ssh. A community Upterm server is running at uptermd.upterm.dev and upterm points to this server by default.

upterm flowchart

License

Apache 2.0

You can’t perform that action at this time.