Раніше спосіб, яким scpпрацювали, коли закликали ( наївно ) копіювати файли між віддаленими системами, був дуже незручним: якщо ви писали, наприклад,
scp user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
scpспочатку відкриється sshсеанс на remote1, а потім він запускається scpзвідти до remote2. Щоб це працювало, вам доведеться встановити облікові дані авторизації для remote2 на remote1.
Сучасний спосіб зробити це, натомість, ("сучасний", тому що він був реалізований лише кілька років тому, і, мабуть, не всі мають -3здатність scp) вимагає двох кроків. Перший необхідний крок - це ~/.ssh/configналаштувати всі параметри підключення як до віддаленого1, так і до віддаленого2, таким чином:
Host remote1.example.org
Port 2222
IdentityFile /path/to/host1-id_rsa
Host remote2.example.org
Port 6969
IdentityFile /path/to/host2-id_rsa
Таким чином стає можливим передавати всі необхідні параметри команді без двозначностей : наприклад, якби ми сказали на CLI використовувати порт 2222 без вищевказаної конфігурації, було б незрозуміло, маємо на увазі віддалений1 чи віддалений2 , і аналогічно для файлу, що містить криптографічні ключі. Таким чином CLI залишається охайним та простим.
По-друге, скористайтеся -3опцією так:
scp -3 user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
-3Інструктує scpдля маршрутизації трафіку через комп'ютер , на якому видається команда, навіть якщо він є третім учасником передачі. Таким чином, авторизаційні дані повинні знаходитись лише на ПК, що видає, третя сторона.