В прошлом способ, которым scp
работали, когда вызывали ( наивно ) копировать файлы между удаленными системами, был очень неудобен: например, если вы написали
scp user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
scp
сначала откроет ssh
сеанс на remote1, а затем он запустится scp
оттуда на remote2. Чтобы это работало, вам нужно установить учетные данные авторизации для remote2 на remote1.
Вместо этого современный способ сделать это («современный», потому что он был реализован всего несколько лет назад и, возможно, не у всех есть -3
-capable scp
) требует двух шагов. Первым необходимым шагом является использование ~/.ssh/config
всех параметров для подключения к remote1 и remote2 следующим образом:
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 без вышеуказанной конфигурации, было бы неясно, имели ли мы в виду remote1 или remote2 , и аналогично для файла, содержащего криптографические ключи. Таким образом, CLI остается аккуратным и простым.
Во-вторых, используйте эту -3
опцию следующим образом:
scp -3 user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
-3
Инструктирует scp
для маршрутизации трафика через компьютер , на котором выдается команда, даже если он является третьим участником передачи. Таким образом, учетные данные авторизации должны находиться только на компьютере-эмитенте, третьей стороне.