Копирование файлов между двумя удалёнными компьютерами

Есть 2 сервера, к которым можно подключиться по ssh используя один и тот же закрытый ключ. Как настроить передачу файлов между серверами scp или rsync используя эти ключи.


Ответы (1 шт):

Автор решения: aleksandr barakin

если вас устраивает, что весь передаваемый поток информации будет проходить через вашу локальную машину дважды — сначала от компьютера1 к вам, затем от вас к компьютеру2, то можно запустить копирование так:

$ scp -3 компьютер1:/откуда/копируем/файл компьютер2:/куда/копируем

полезным моментом здесь является то, что компьютер1 и компьютер2 могут даже не иметь прямой связи друг с другом.


если между компьютером1 и компьютером2 есть прямая связь, и вы хотели бы передавать поток информации напрямую между ними, то потребуется выполнение дополнительных условий:

  1. на локальной машине у вас должен работать ssh-agent, которому добавлен упомянутый вами секретный ключ (проверить можно командой $ ssh-add -l)

  2. у пользователя на компьютере1 в файле ~/.ssh/known_hosts должен присутствовать публичный ключ компьютера2. он будет добавлен автоматически, если (хотя бы один раз) подключиться к компьютеру1 (опция -A — использовать ssh-agent):

    $ ssh -A компьютер1
    

    а оттуда — к компьютеру2:

    $ ssh компьютер2
    

теперь в команде копирования надо будет указывать использование ssh-agent (у программы scp нет короткой опции -A, как у программы ssh, и надо указывать «длинным образом»):

$ scp -o forwardagent=yes компьютер1:/откуда/копируем/файл компьютер2:/куда/копируем

указывать пользователя можно обычным образом: пользователь@компьютер. а вот если используется не стандартный 22-й порт, то адресовать компьютеры можно с помощью url-схемы:

$ scp -o forwardagent=yes scp://компьютер1:порт1//откуда/копируем/файл scp://компьютер2:порт2//куда/копируем

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

→ Ссылка