2

Я ищу простой способ автоматизировать мои SSH-туннели.

В основном я хочу, чтобы местный демон слушал серию локальных портов. Если одна программа отправляет трафик на этот порт, демон должен запустить туннель SSH и переслать этот туннель. В то же время этот туннель должен истечь через определенное время бездействия и закрыть соединение до следующего запроса.

Пока что большинство решений, которые я видел, пытаются сохранить туннель открытым. Однако я просто хочу, чтобы туннель существовал автоматически только тогда, когда это необходимо.

1 ответ1

0

Вы можете использовать скрипт launchctl и добавить его в /System/Library/LaunchAemons/smtp.plist . В настоящее время я использую это для автоматической настройки ssh-туннеля для отправки электронных писем. Затем скрипт выглядит, например:

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

Конечно, для этого вам нужно использовать аутентификацию с открытым ключом. В файле .ssh/authorized_keys вы должны определить команду вроде command="netcat smtp 25",no-X11-forwarding,no-agent-forwarding,no-port-forwarding <public key> в строке соответствующего ключа. ,

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .