Tunnel automatique ssh

2

Je cherche un moyen facile d'automatiser mes tunnels SSH.

En gros, je veux un démon local écoutant une série de ports locaux. Si un programme envoie du trafic vers ce port, le démon doit démarrer un tunnel SSH et le transférer. En même temps, ce tunnel devrait expirer après un certain temps d'inactivité et fermer la connexion jusqu'à la prochaine demande.

Jusqu'ici, la plupart des solutions que j'ai vues essayent de garder le tunnel ouvert. Cependant, je veux juste que le tunnel n'existe automatiquement que lorsque c'est nécessaire.

SystematicFrank
la source

Réponses:

0

Vous pouvez utiliser un script launchctl et l'ajouter à /System/Library/LaunchAemons/smtp.plist. J'utilise actuellement cela pour configurer automatiquement un tunnel SSH pour l'envoi d'e-mails. Le script ressemble alors par exemple à:

 <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST    1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
     <dict>
        <key>Label</key>
      <string>HOST.smtp</string>
    <key>ProgramArguments</key>
      <array>
        <string>/usr/bin/ssh</string>
        <string>-q</string>
        <string>-T</string>
        <string>-i</string>
        <string>/private/var/root/.ssh/smtpssh</string>
        <string>USER@EMAILHOST</string>
      </array>
    <key>Sockets</key>
      <dict>
        <key>Listeners</key>
          <dict>
            <key>Bonjour</key>
               <false/>
            <key>SockServiceName</key>
               <integer>PORT</integer>
            <key>SockType</key>
               <string>stream</string>
          </dict>
      </dict>
    <key>inetdCompatibility</key>
      <dict>
        <key>Wait</key>
          <false/>
      </dict>
  </dict>
</plist>

Bien sûr, vous devez utiliser l'authentification par clé publique pour que cela fonctionne. Dans le .ssh/authorized_keysfichier, vous devez définir une commande comme command="netcat smtp 25",no-X11-forwarding,no-agent-forwarding,no-port-forwarding <public key>dans la ligne de la clé correspondante.

Kai Szuttor
la source