Akom's Tech Ruminations

Various tech outbursts - code and solutions to practical problems

Linux Puppet recipe for setting up autossh via systemd

Posted by Admin • Thursday, November 19. 2020 • Category: DevOps, Linux

I've always set up autossh in /etc/rc.local, but with CentOS 8 that doesn't work well (things start too early, etc). Luckily, there is a nicer way using systemd templates. Essentially, all you have to do is create one symlink and one config file per instance of autossh.


Make a config file


OPTIONS=-N  -M 20000 -R8888:

Make a symlink

ln -s /usr/lib/systemd/system/autossh@.service /etc/systemd/system/autossh@mything.service


systemctl start autossh@mything.service
journalctl -xe

But it's better to automate:

Puppet Recipe

define autossh(
  ) {

    file {"/etc/systemd/system/autossh@${service}.service":
      ensure => link,
      target => '/usr/lib/systemd/system/autossh@.service'
    } ->
    file {"/etc/autossh/${service}.conf":
      content => "OPTIONS=${args}"
    } ->
    service {"autossh@${service}":
      ensure => running,
      enable => true,


# and example usage - random port forwarding
autossh{'mything': args => '-N  -M 20000 -R8888: host1'}
autossh{'mything2': args => '-N  -M 20000 -R8888: host2'}