summaryrefslogtreecommitdiff
path: root/autossh/systemd/system/autossh@.service
blob: f549e16ca508b3b31d00ebc3b2c06564af70b02e (plain)
  1. # systemd implementation of autossh
  2. #
  3. # On $CLIENT
  4. # * Create keypair (no passphrase):
  5. # ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_$SERVER
  6. # * Show pubkey:
  7. # cat ~/.ssh/id_ed25519_$SERVER.pub
  8. #
  9. # On $SERVER
  10. # * Create locked-down user
  11. # adduser --system --group --force-badname $CLIENT
  12. # * Accept connections from $CLIENT (copy pubkey from above):
  13. # su - $CLIENT -c "mkdir -p ~/.ssh"
  14. # su - $CLIENT -c "echo '$PUBKEY' > ~/.ssh/authorized_keys"
  15. #
  16. # On $CLIENT
  17. # * Test (and approve) connection to $SERVER:
  18. # ssh -i /root/.ssh/id_ed25519_$SERVER $CLIENT@$SERVER
  19. # * Copy this file to /etc/systemd/system/autossh@.service
  20. # * Register with systemd, activate, and verify:
  21. # systemctl enable autossh@$SERVER
  22. # service autossh@$SERVER start
  23. # service autossh@$SERVER status
  24. #
  25. # On $SERVER
  26. # * Locate port:
  27. # lsof -nai TCP -a -u $CLIENT
  28. # * Connect:
  29. # ssh -p $PORT 127.0.0.1
  30. [Unit]
  31. Description=SSH tunnel for %i
  32. [Service]
  33. Type=simple
  34. Restart=always
  35. RestartSec=1min
  36. ExecStart=/usr/bin/ssh -i /root/.ssh/id_ed25519_%i -o BatchMode=yes -o ExitOnForwardFailure=yes -o IPQoS=lowdelay -o ServerAliveInterval=10 -CNR 0:127.0.0.1:22 %H@%i
  37. [Install]
  38. WantedBy=multi-user.target