6

I use ssh -L -g, but intermittently the connection is lost, thus:

$ ssh -L 8080:localhost:8080 example.com -g
Last login: Tue Apr 24 07:19:04 2012 from 203.0.113.123
Read from remote host example.com: Connection timed out
Connection to example.com closed.

Can anyone suggest a robust way to keep these connections alive, and reconnect it they are closed.

2 Answers 2

8

You could try Mosh.

2
  • Damn, that looks awesome, I work on the train every day and I can't believe I never thought to look for a general solution to the problem. As you can probably see, I actually found autossh which appears to solve the specific problem I have, but I'll definitely check Mosh out.
    – davetapley
    Apr 25, 2012 at 2:47
  • 1
    mosh doesn't handle port forwarding Jan 25, 2016 at 6:14
4

autossh appears to fulfill my requirement, from the readme:

autossh is a program to start a copy of ssh and monitor it, 
restarting it as necessary should it die or stop passing traffic.

Substituting the arguments given in the question:

autossh -M 0 -L 8080:localhost:8080 example.com -g

(the -M 0 is required to turn the monitoring loop off)

I was able to kill -9 the connection from example.com and see the connection re-established automatically by autossh:

local$ autossh -M 0 -L 8080:localhost:8080 example.com -g
Last login: Wed Apr 25 03:23:56 2012 from 203.0.113.123
example.com$

Execute kill -9 on PID of connection on example.com.

local$ Connection to example.com closed.
Last login: Wed Apr 25 03:34:01 2012 from 203.0.113.123
local$ 

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .