Túnel ssh automático

2

Estou procurando uma maneira fácil de automatizar meus túneis ssh.

Basicamente eu quero um daemon local escutando uma série de portas locais. Se um programa enviar tráfego para essa porta, o daemon deve iniciar um túnel SSH e encaminhar esse túnel. Ao mesmo tempo, esse túnel deve expirar após certo tempo sem atividade e fechar a conexão até a próxima vez que uma solicitação for feita.

Até agora, a maioria das soluções que vi tentam manter o túnel aberto. No entanto, eu só quero que o túnel exista automagicamente somente quando for necessário.

    
por SystematicFrank 19.02.2014 / 17:13

1 resposta

0

Você pode usar um script launchctl e adicioná-lo a /System/Library/LaunchAemons/smtp.plist . Atualmente estou usando isso para configurar automaticamente um túnel ssh para enviar e-mails. O script, em seguida, parece, por exemplo:

 <?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>

É claro que você precisa usar a autenticação de chave pública para que isso funcione. No arquivo .ssh/authorized_keys , você precisa definir um comando como command="netcat smtp 25",no-X11-forwarding,no-agent-forwarding,no-port-forwarding <public key> na linha da chave correspondente.

    
por 06.12.2014 / 16:38