Sådan Overvåger og Genstarter du Automatisk en SSH-tunnel og Forhindrer Hængende Forbindelser

Hvordan kan en SSH-tunnel overvåges og genstartes automatisk, når den hænger, og hvordan kan det forhindres, at SSH-forbindelsen hænger?

En SSH-tunnel kan overvåges og genstartes automatisk ved hjælp af scripts, cron-jobs og overvågningsværktøjer som Nagios eller Monit, mens hængende forbindelser kan forhindres med keepalive-indstillinger og værktøjer som autossh.

Hvordan kan en SSH-tunnel overvåges og genstartes automatisk, når den hænger, og hvordan kan det forhindres, at SSH-forbindelsen hænger?

En SSH-tunnel kan være en kritisk komponent i mange netværksopsætninger, og det er vigtigt at sikre, at den fungerer korrekt og pålideligt. Her er nogle metoder til at overvåge og genstarte en SSH-tunnel automatisk, samt tips til at forhindre, at SSH-forbindelsen hænger:

Overvågning og Automatisk Genstart af SSH-tunnel

  • Brug af scripts: Opret et script, der periodisk tjekker, om SSH-tunnelen er aktiv. Hvis tunnelen ikke svarer, kan scriptet genstarte forbindelsen.
    • Eksempel på et Bash-script:
      #!/bin/bash
      if ! pgrep -f "ssh -N -L"; then
        echo "SSH tunnel is down, restarting..."
        ssh -N -L local_port:remote_host:remote_port user@remote_host &
      fi
  • Brug af cron-job: Planlæg et cron-job til at køre overvågningsscriptet med jævne mellemrum.
    • Eksempel på en cron-job:
      */5 * * * * /path/to/your/script.sh
  • Brug af overvågningsværktøjer: Implementer overvågningsværktøjer som Nagios, Zabbix eller Monit til at overvåge SSH-tunnelen og genstarte den, hvis den hænger.
    • Monit konfigurationseksempel:
      check process ssh_tunnel with pidfile /var/run/ssh_tunnel.pid
      start program = "/usr/bin/ssh -N -L local_port:remote_host:remote_port user@remote_host"
      stop program = "/usr/bin/pkill -f 'ssh -N -L'"
      if failed port local_port then restart

Forhindring af SSH-forbindelsen i at hænge

  • KeepAlive-indstillinger: Konfigurer SSH til at sende keepalive-pakker for at forhindre forbindelsen i at hænge.
    • Tilføj følgende linjer til ~/.ssh/config eller /etc/ssh/ssh_config:
      Host *
        ServerAliveInterval 60
        ServerAliveCountMax 3
  • TCPKeepAlive: Aktivér TCPKeepAlive for at sikre, at inaktive forbindelser opdages og lukkes.
    • Tilføj følgende linje til ~/.ssh/config eller /etc/ssh/ssh_config:
      TCPKeepAlive yes
  • Brug af autossh: Autossh er et værktøj, der overvåger og genstarter SSH-forbindelser automatisk, hvis de hænger.
    • Installer autossh og brug det i stedet for ssh:
      autossh -M 0 -N -L local_port:remote_host:remote_port user@remote_host

Ved at implementere disse metoder kan du sikre, at din SSH-tunnel forbliver stabil og pålidelig, og at eventuelle problemer hurtigt opdages og rettes.