Skip to content

Instantly share code, notes, and snippets.

@jasonious
Forked from iskolbin/tmate_for_ssh.md
Created September 7, 2021 19:01
Show Gist options
  • Save jasonious/593b68198cf6e5c1e3d9d92683fb5d67 to your computer and use it in GitHub Desktop.
Save jasonious/593b68198cf6e5c1e3d9d92683fb5d67 to your computer and use it in GitHub Desktop.
Ubuntu(systemd) tmate service for ssh

The motivation is: ssh to remote computer without port forwading, dynamic DNS and so on, the only thing needed is that the remote is connected to the Internet.

  1. On remote get tmate, put it in /usr/local/bin (apt version as of 18.04LTS is too old):
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=root
ExecStart=/usr/local/bin/tmate -F

probably you want to change User

  1. Install tmate as service
systemctl daemon-reload
systemctl start tmate
systemctl enable tmate
  1. You can reboot and ssh from any computer with private key:
ssh <REGISTRED_USERNAME>/<SESSION_NAME>@lon1.tmate.io
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment