У меня есть ssh-соединение, и я должен отправить несколько локальных файлов и вывести их на ssh-сервер.
Я знаю, что могу сделать это с помощью следующей команды
tar zcf - stuff | ssh user@server 'tar zxf -'
Я хотел бы установить ее последовательно, используя оператор && kbd>. У меня уже есть соединение, и я не хочу повторно регистрироваться для каждого канала, поскольку я буду использовать только один канал за раз.
Просто чтобы прояснить, я не просто перемещаю тарболы по сети, но также и ввод с устройств, собираемых время от времени по мере открытия конвейера. Просто чтобы люди не говорили: «Почему бы вам не использовать эту программу для перемещения вашего файла через Интернет» или «Вы также можете использовать USB-диск для передачи этих файлов»
Вы можете использовать постоянные соединения. В вашем файле ~/.ssh/config
добавьте такие строки:
Host server.name.or.wildcard.goes.here
ControlPath /tmp/ssh.%r@%h:%p
ControlMaster auto
ControlPersist yes
ServerAliveInterval 300
ServerAliveCountMax 15
Это сообщит ssh, что нужно держать соединение открытым с файлом в /tmp
, который основан на комбинации пользователь / хост / порт. После однократного подключения ssh повторно использует существующее соединение. Это в конечном итоге истечет время ожидания и отключится автоматически. Таким образом, вы получите запрос пароля только один раз для нескольких команд, запущенных в быстрой последовательности, в течение заданного промежутка времени. Если соединение слишком долго не используется, оно будет закрыто, и вам нужно будет снова ввести пароль.
Сохранение соединения открытым также устраняет начальную задержку создания защищенного соединения. Это отлично подходит для сценариев, где необходимо выполнить какое-либо действие, например скопировать файл, затем подождать, затем скопировать другой файл и т. Д. cdist
использует эту технику для ускорения подготовки компьютера.
Вы также можете посмотреть, как создавать ssh-ключи, чтобы полностью избежать пароля.