Provided by: autossh_1.4g-1_amd64 bug

NAME

     autossh — monitor and restart ssh sessions

SYNOPSIS

     autossh [-V] [-M port[:echo_port]] [-f] [SSH_OPTIONS]

DESCRIPTION

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

     The original idea and the mechanism were from rstunnel (Reliable SSH Tunnel). With version 1.2 of autossh
     the method changed: autossh uses ssh to construct a loop of ssh forwardings (one from local to remote, one
     from remote to local), and then sends test data that it expects to get back. (The idea is thanks to
     Terrence Martin.)

     With version 1.3, a new method is added (thanks to Ron Yorston): a port may be specified for a remote echo
     service that will echo back the test data. This avoids the congestion and the aggravation of making sure
     all the port numbers on the remote machine do not collide. The loop-of-forwardings method remains available
     for situations where using an echo service may not be possible.

CONTROLLING SSH

   SSH exits
     autossh tries to distinguish the manner of death of the ssh process it is monitoring and act appropriately.
     The rules are:

     1.      If the ssh process exited normally (for example, someone typed "exit" in an interactive session),
             autossh exits rather than restarting;

     2.      If autossh itself receives a SIGTERM, SIGINT, or a SIGKILL signal, it assumes that it was
             deliberately signalled, and exits after killing the child ssh process;

     3.      If autossh itself receives a SIGUSR1 signal, it kills the child ssh process and starts a new one;

     4.      Periodically (by default every 10 minutes), autossh attempts to pass traffic on the monitor
             forwarded port. If this fails, autossh will kill the child ssh process (if it is still running) and
             start a new one;

     5.      If the child ssh process dies for any other reason, autossh will attempt to start a new one.

   Startup behaviour
     If the ssh session fails with an exit status of 1 on the very first try, autossh

     1.      will assume that there is some problem with syntax or the connection setup, and will exit rather
             than retrying;

     2.      There is a "starting gate" time. If the first ssh process fails within the first few seconds of
             being started, autossh assumes that it never made it "out of the starting gate", and exits. This is
             to handle initial failed authentication, connection, etc. This time is 30 seconds by default, and
             can be adjusted (see the AUTOSSH_GATETIME environment variable below). If AUTOSSH_GATETIME is set
             to 0, then both behaviours are disabled: there is no "starting gate", and autossh will restart even
             if ssh fails on the first run with an exit status of 1. The "starting gate" time is also set to 0
             when the -f flag to autossh is used.

   Continued failures
     If the ssh connection fails and attempts to restart it fail in quick succession, autossh will start
     delaying its attempts to restart, gradually backing farther and farther off up to a maximum interval of the
     autossh poll time (usually 10 minutes).  autossh can be "prodded" to retry by signalling it, perhaps with
     SIGHUP ("kill -HUP").

   Connection setup
     As connections must be established unattended, the use of autossh requires that some form of automatic
     authentication be set up. The use of RSAAuthentication with ssh-agent is the recommended method. The
     example wrapper script attempts to check if there is an agent running for the current environment, and to
     start one if there isn't.

     It cannot be stressed enough that you must make sure ssh works on its own, that you can set up the session
     you want before you try to run it under autossh

     If you are tunnelling and using an older version of ssh that does not support the -N flag, you should
     upgrade (your version has security flaws). If you can't upgrade, you may wish to do as rstunnel does, and
     give ssh a command to run, such as "sleep 99999999999".

OPTIONS

     -M port[:echo_port]
             specifies the base monitoring port to use. Without the echo port, this port and the port
             immediately above it ( port + 1) should be something nothing else is using.  autossh will send test
             data on the base monitoring port, and receive it back on the port above. For example, if you
             specify “-M 20000”, autossh will set up forwards so that it can send data on port 20000 and receive
             it back on 20001.

             Alternatively, a port for a remote echo service may be specified. This should be port 7 if you wish
             to use the standard inetd echo service.  When an echo port is specified, only the specified monitor
             port is used, and it carries the monitor message in both directions.

             Many people disable the echo service, or even disable inetd, so check that this service is
             available on the remote machine. Some operating systems allow one to specify that the service only
             listen on the localhost (loopback interface), which would suffice for this use.

             The echo service may also be something more complicated: perhaps a daemon that monitors a group of
             ssh tunnels.

             Setting the monitor port to 0 turns the monitoring function off, and autossh will only restart ssh
             upon ssh's exit. For example, if you are using a recent version of OpenSSH, you may wish to explore
             using the ServerAliveInterval and ServerAliveCountMax options to have the SSH client exit if it
             finds itself no longer connected to the server. In many ways this may be a better solution than the
             monitoring port.

     -f      causes autossh to drop to the background before running ssh. The -f flag is stripped from arguments
             passed to ssh. Note that there is a crucial difference between -f with autossh, and -f with ssh:
             when used with autossh ssh will be unable to ask for passwords or passphrases. When -f is used, the
             "starting gate" time (see AUTOSSH_GATETIME) is set to 0.

     -V      causes autossh to display its version number and exit.

ENVIRONMENT

     Other than the flag to set the connection monitoring port, autossh uses environment variables to control
     features. ssh seems to be still collecting letters for options, and this seems the easiest way to avoid
     collisions.

     AUTOSSH_DEBUG
             If this variable is set, the logging level is set to to LOG_DEBUG, and if the operating system
             supports it, syslog is set to duplicate log entries to stderr.

     AUTOSSH_FIRST_POLL
             Specifies the time to wait before the first connection test. Thereafter the general poll time is
             used (see AUTOSSH_POLL below).

     AUTOSSH_GATETIME
             Specifies how long ssh must be up before we consider it a successful connection. The default is 30
             seconds. Note that if AUTOSSH_GATETIME is set to 0, then not only is the gatetime behaviour turned
             off, but autossh also ignores the first run failure of ssh. This may be useful when running autossh
             at boot.

     AUTOSSH_LOGLEVEL
             Specifies the log level, corresponding to the levels used by syslog; so 0-7 with 7 being the
             chattiest.

     AUTOSSH_LOGFILE
             Specifies that autossh should use the named log file, rather than syslog.

     AUTOSSH_MAXLIFETIME
             Sets the maximum number of seconds that the program should run. Once the number of seconds has been
             passed, the ssh child will be killed and the program will exit.

     AUTOSSH_MAXSTART
             Specifies how many times ssh should be started. A negative number means no limit on the number of
             times ssh is started. The default value is -1.

     AUTOSSH_MESSAGE
             Append message to echo message sent when testing connections.

     AUTOSSH_NTSERVICE
             (Cygwin only.) When set to "yes" , autossh sets up to run as an NT service under cygrunsrv. This
             adds the -N flag for ssh if not already set, sets the log output to stdout, and changes the
             behaviour on ssh exit so that it will restart even on a normal exit.

     AUTOSSH_PATH
             Specifies the path to the ssh executable, in case it is different than the path compiled in.

     AUTOSSH_PIDFILE
             Write autossh pid to specified file.

     AUTOSSH_POLL
             Specifies the connection poll time in seconds; default is 600 seconds.  Unless AUTOSSH_FIRST_POLL
             is used, the first poll time will set to match the poll time. If the poll time is less than twice
             the network timeouts (default 15 seconds) the network timeouts will be adjusted downward to 1/2 the
             poll time.

     AUTOSSH_PORT
             Sets the connection monitoring port. Mostly in case ssh appropriates -M at some time. But because
             of this possible use, AUTOSSH_PORT overrides the -M flag. A value of 0 turns the monitoring
             function off.

ENVIRONMENT

     There are two particular OpenSSH options that are useful when using autossh : ExitOnForwardFailure=yes on
     the client side to make sure forwardings have succeeded when autossh assumes the connection is setup
     properly.  ClientAliveInterval on the server side to make sure the listening socket is closed on the server
     side if the connection closes on the client side.

DEBIAN-SPECIFIC BEHAVIOR

     The debian version of autossh uses a wrapper to automatically select a free monitoring port and -M
     overrides AUTOSSH_PORT, see /usr/share/doc/autossh/README.Debian for further information.

AUTHOR

     autossh was written by Carson Harding.

SEE ALSO

     ssh(1), ssh_config(5,) sshd_config(5,) ssh-add(1), ssh-agent(1), ssh-keygen(1), cygrunsrv(1).