Skip to content

Instantly share code, notes, and snippets.

@brett-schneider
Forked from iskolbin/tmate_for_ssh.md
Last active July 25, 2021 05:44
Show Gist options
  • Save brett-schneider/aab7cf3ce507543a89e04a0d083841b2 to your computer and use it in GitHub Desktop.
Save brett-schneider/aab7cf3ce507543a89e04a0d083841b2 to your computer and use it in GitHub Desktop.
Ubuntu(systemd) tmate service for ssh

The motivation is: reverse ssh to remote computer, the only thing needed is that the remote is connected to the Internet.

  1. On 18.04 or older remote, get tmate, put it in /usr/local/bin (20.04 is 2.4.0 but has issues /w -F [tmate-io/tmate#204]):
curl -L https://github.com/tmate-io/tmate/releases/download/2.4.0/tmate-2.4.0-static-linux-amd64.tar.xz|tar xJv
sudo mv tmate-2.4.0-static-linux-amd/tmate /usr/local/bin
  1. Put public keys in ~/.ssh/authorized_keys

  2. Get API key from https://tmate.io/ (or host your own server)

  3. Create ~/.tmate.conf

set tmate-api-key "<YOUR_API_KEY>"                                
set tmate-session-name "<SESSION_NAME>"                     
set tmate-authorized-keys "~/.ssh/authorized_keys"        

Session name is chosen by you

  1. Create /etc/systemd/system/tmate@.service
[Install]
WantedBy=multi-user.target

[Unit]
Description=Tmate-SSH
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
Restart=always
User=%i
ExecStart=/usr/local/bin/tmate -F
  1. Install tmate as service with
systemctl daemon-reload
systemctl start tmate@<user>
systemctl enable tmate@<user>
  1. You can reboot and ssh from any computer with private key:
ssh <REGISTRED_USERNAME_FROM_TMATE>/<SESSION_NAME>@lon1.tmate.io
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment