autossh: Run, monitor and restart SSH connections

“Autossh” is a versatile command-line tool that simplifies the management of SSH connections, providing automated monitoring, restarting, and reconnection capabilities. It is specifically designed to maintain persistent SSH tunnels and keep them alive, ensuring reliable and uninterrupted remote access.

Here are the key features and benefits of “Autossh”:

  • Persistent SSH Connections: “Autossh” excels at establishing and maintaining SSH connections, especially in scenarios where network instability or intermittent connectivity issues are prevalent. It automatically monitors the SSH connection and, if it detects a disconnection or failure, promptly initiates the reconnection process. This capability is particularly useful for long-running operations, remote administration, secure file transfers, or establishing port forwarding tunnels.
  • Automatic Reconnection: One of the standout features of “Autossh” is its ability to automatically reconnect and resume SSH sessions. It eliminates the need for manual intervention when an SSH connection is interrupted or dropped due to network issues. By continuously monitoring the connection and reestablishing it when necessary, “Autossh” ensures that critical connections remain active without requiring constant attention from the user.
  • Port Forwarding Tunnels: “Autossh” is commonly employed to manage SSH tunnels, specifically port forwarding. It allows users to set up secure tunnels between different hosts, enabling the forwarding of network traffic from local or remote ports. This functionality is often utilized for accessing services on remote machines securely or establishing encrypted communication channels between systems.
  • Flexibility and Compatibility: “Autossh” is compatible with any SSH implementation and accepts all standard SSH flags and options. This flexibility enables users to tailor the tool to their specific SSH configuration and requirements. Additionally, “Autossh” supports various authentication methods, including password-based authentication, public key authentication, and the use of SSH agent forwarding.
  • Simple Command-line Interface: The command-line interface of “Autossh” is straightforward and easy to use. Users can specify the SSH connection parameters, such as the remote host and port, username, and any additional SSH options. Once the initial connection is established, “Autossh” continuously monitors the connection and takes care of the reconnection process automatically, minimizing manual intervention.

To utilize “Autossh,” users typically invoke the command-line tool followed by the SSH connection details, including the remote host, username, and any specific SSH options or flags they wish to use. Once launched, “Autossh” runs in the background, actively maintaining the SSH connection and automatically reconnecting if necessary.

“Autossh” is widely used in various scenarios, such as remote administration, network troubleshooting, accessing services behind firewalls or NAT routers, and securely accessing resources on remote networks. Its ability to ensure persistent and reliable SSH connections makes it an essential tool for managing remote access and maintaining secure communication channels.

autossh Command Examples

1. Start an SSH session, restarting when a monitoring port fails to return data:

# autossh -M monitor_port "ssh_command"

2. Forward a local port to a remote one, restarting when necessary:

# autossh -M monitor_port -L local_port:localhost:remote_port user@host

3. Fork autossh into the background before executing ssh and don’t open a remote shell:

# autossh -f -M monitor_port -N "ssh_command"

4. Run in the background, with no monitoring port, and instead send SSH keep-alive packets every 10 seconds to detect failure:

# autossh -f -M 0 -N -o "ServerAliveInterval 10" -o "ServerAliveCountMax 3" "ssh_command"

5. Run in the background, with no monitoring port and no remote shell, exiting if the port forward fails:

# autossh -f -M 0 -N -o "ServerAliveInterval 10" -o "ServerAliveCountMax 3" -o ExitOnForwardFailure=yes -L local_port:localhost:remote_port user@host

6. Run in the background, logging autossh debug output and ssh verbose output to files:

AUTOSSH_DEBUG=1 AUTOSSH_LOGFILE=/path/to/autossh_log_file.log autossh -f -M monitor_port -v -E path/to/ssh_log_file.log ssh_command

Summary

In summary, “Autossh” is a reliable and versatile tool for managing SSH connections, offering automated monitoring, restarting, and reconnection capabilities. By ensuring persistent SSH tunnels and auto-reconnecting in case of disruptions, it simplifies remote access and helps maintain secure communication channels.

Related Post