W przeszłości sposób, w jaki scpdziałał ( naiwnie ) w celu kopiowania plików między zdalnymi systemami, był bardzo niewygodny: na przykład pisałeś
scp user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
scpnajpierw otworzy sshsesję na scpzdalnym 1 , a następnie uruchomi się stamtąd na zdalnym 2. Aby to zadziałało, musisz skonfigurować poświadczenia autoryzacji dla remote2 na remote1.
Zamiast tego nowoczesny sposób („nowoczesny”, ponieważ został zaimplementowany zaledwie kilka lat temu i być może nie wszyscy są w stanie to -3zrobić scp) wymaga dwóch kroków. Pierwszym niezbędnym krokiem jest ~/.ssh/configskonfigurowanie wszystkich opcji połączenia zarówno ze zdalnym 1, jak i zdalnym 2 w następujący sposób:
Host remote1.example.org
Port 2222
IdentityFile /path/to/host1-id_rsa
Host remote2.example.org
Port 6969
IdentityFile /path/to/host2-id_rsa
W ten sposób staje się możliwe przekazywanie wszystkich niezbędnych opcji do polecenia bez dwuznaczności : na przykład, jeśli powiedzieliśmy w interfejsie CLI, że korzystamy z portu 2222 bez powyższej konfiguracji, nie byłoby jasne, czy mówimy o zdalnym1, czy zdalnym2 , i podobnie dla pliku zawierającego klucze kryptograficzne. W ten sposób CLI pozostaje uporządkowany i prosty.
Po drugie, użyj -3opcji w następujący sposób:
scp -3 user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
Ta -3opcja nakazuje scpkierowanie ruchu przez komputer, na którym wydano polecenie, nawet jeśli jest to strona trzecia transferu. W ten sposób poświadczenia autoryzacji muszą znajdować się tylko na komputerze wydającym, stronie trzeciej.