Копирование файлов через SSH

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

Чтобы не вводить пароли доступа каждый раз можно предварительно скопировать публичные ключи на целевую и промежуточную машины с помощью команды ssh-copy-id.

Пример 1

Для передачи файла payload.txt в папку /tmp целевой системы target-host через промежуточный узел jump-host:

tar cf - payload.txt | ssh -J user1@jump-host user2@target-host 'tar x -v -f - -C /tmp;'

Пример 2

Для чтения файла /prroc/config.gz из целевой системы target-host через промежуточный узел jump-host:

ssh -J user1@jump-host user2@target-host 'tar cf - -С /proc config.gz' | tar x -v -f -

Кстати, промежуточных узлов может быть больше одного.

Комментировать