Как я могу поддерживать открытое ssh-соединение и использовать его из сценариев оболочки?

Если Вы спрашиваете, "Что путь состоит в том, чтобы подключить к серверу SMTP с помощью SSH вместо telnet?" ответ нет ни одного.

SSH только связывается по портам с помощью протокола SSH. Используя его для соединения с любым другим портом перестанет работать, потому что SSH попытается говорить протокол SSH, который не будет понят под сервером SMTP (или FTP или другие серверные процессы).

Можно соединиться с другими серверами SSH, которые работают на других портах, но я интерпретировал вопрос означать, что Вы хотели говорить SMTP с почтовым сервером.

4
25.07.2015, 09:26
2 ответа

Функция называется ControlMaster , которая выполняет мультиплексирование по одному существующему каналу . Это заставляет ssh выполнять все обмены ключами и входить в систему только один раз; таким образом, более поздние команды будут выполняться намного быстрее. Вы активируете его, используя эти три строки в вашем .ssh / config :

Host host.com
  ControlMaster auto
  ControlPath ~/.ssh/master-%C
  # for openssh < 6.7 you need to use this one:
  # ControlPath ~/.ssh/master-%r@%h-%p
  ControlPersist 5m

Вы можете настроить его под свои нужды; одна альтернатива - открыть одно главное соединение, которое остается открытым во время выполнения других команд; тогда вам не понадобится ControlPersist .

Эта функция предоставляет множество возможностей для настройки, но убедитесь, что вы храните сокет ControlPath в надежном месте, недоступном для чтения другими пользователями, иначе им можно будет воспользоваться не по назначению.

Дополнительную информацию можно найти на странице руководства ssh_config (5) .

11
27.01.2020, 20:46

Если у вас есть контроль над машиной до такой степени, что вы автоматизируете на ней задачи, то почему нельзя добавить свой ключ в authorized_keys?

ssh-copy-id -i ~/.ssh/foo somehost@example.com

Тогда вам не нужно вводить пароль при каждом подключении.

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

Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 600

https://puppetlabs.com/blog/speed-up-ssh-by-reusing-connections

В долгосрочной перспективе, если вы автоматизируете задачи, вам, вероятно, будет лучше использовать среду автоматизации, которая обрабатывает установление соединение для вас, например:

2
27.01.2020, 20:46

Теги

Похожие вопросы