Использование SCP поверх существующей цепочки SSH? Возможно ли?

Использование SCP поверх существующей цепочки SSH? Возможно ли?

При копировании файлов SCP устанавливает новое соединение, что иногда может затруднить работу, если задействованы брандмауэры.

Например,

Хост-A <--> Хост-B <--> Хост-C <--> Хост-D

  • Хост-A подключается к Хосту-B через SSH, затем Хост-B подключается к Хосту-C через SSH, а затем к Хосту-D.
  • Host-A не может подключаться к другим компьютерам, кроме Host-B, Host-B может подключаться только к Host-A и Host-C, Host-C может подключаться только к Host-B и Host-D, а последний Host-D может подключаться только к Host-C.

Команда (на Host-D)scp /home/user/file Хост-A:/home/user/newfileпопытается создать новый туннель SSH между ними, что мне не нужно. Я хочу, чтобы существующая цепочка туннелей SSH копировала файл обратно через предыдущие хосты, пока он не достигнет Host-A.

Как я могу это сделать?

решение1

Вы можете повторно использовать существующие соединения. Используйте либо переключатель командной строки -M, либо (клиентскую) опцию конфигурации ControlMaster. Смотритеэтот ответПодробности на StackOverflow.

Я широко использовал это в сочетании с ControlPersistto, чтобы закрыть соединение только после задержки. Это позволяет избежать времени соединения, которое вы бы в противном случае понесли, и радикально повышает производительность, когда вы закрываете и повторно подключаетесь несколько раз (как я часто делаю во время интерактивного использования).

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

Связанный контент