Копирование файлов между двумя удалёнными компьютерами
Есть 2 сервера, к которым можно подключиться по ssh используя один и тот же закрытый ключ. Как настроить передачу файлов между серверами scp или rsync используя эти ключи.
Ответы (1 шт):
если вас устраивает, что весь передаваемый поток информации будет проходить через вашу локальную машину дважды — сначала от компьютера1 к вам, затем от вас к компьютеру2, то можно запустить копирование так:
$ scp -3 компьютер1:/откуда/копируем/файл компьютер2:/куда/копируем
полезным моментом здесь является то, что компьютер1 и компьютер2 могут даже не иметь прямой связи друг с другом.
если между компьютером1 и компьютером2 есть прямая связь, и вы хотели бы передавать поток информации напрямую между ними, то потребуется выполнение дополнительных условий:
на локальной машине у вас должен работать ssh-agent, которому добавлен упомянутый вами секретный ключ (проверить можно командой
$ ssh-add -l)у пользователя на компьютере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//куда/копируем
обратите внимание, что после номера порта надо будет добавить ещё один слэш, иначе путь на компьютере будет считаться относительным, и отсчитываться от домашнего каталога пользователя.