I wanted to pair with a friend of mine, exploring Magit mode in Emacs. There are a couple of projects to make it easy to use tmux(-like) to simplify this.
-
pairing lets you share a screen and pair, on a common server where both the users have access to. But I wanted to use my machine, instead of the server.
-
tmate gets around the restriction of having a common server where both users have access, but needs a custom install of tmux, and the use of a 3rd party service.
I worked around this, using an ssh reverse tunnels. Here are the steps, for anyone who’d like to reproduce.
-
Add your partner(-in-crime)’s ssh key to authorized keys on a server that has a public IP (
example.com
, let’s say). -
Add your server’s key to authorized keys on your local machine.
-
Create a reverse tunnel from your machine to the server.
ssh -fNR 19999:localhost:22 server_user@example.com
-R 19999
essentially forwards port 19999 onexample.com
to localhost’s 22.-fN
is to say no terminal, send connection to background. -
Your partner first ssh’s to example.com and then ssh’s to your laptop.
On your partner’s machine
ssh server_user@example.com
On the server, your partner does
ssh your_username@localhost -p 19999
Your partner is on your machine, and can run
rm -rf
! But, hopefully they’ll only runtmux attach
. Obviously, do this only with people you trust! -
Start a tmux session locally.
-
Profit!