Раніше спосіб, яким 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
для маршрутизації трафіку через комп'ютер , на якому видається команда, навіть якщо він є третім учасником передачі. Таким чином, авторизаційні дані повинні знаходитись лише на ПК, що видає, третя сторона.