W przeszłości sposób, w jaki scp
dział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
scp
najpierw otworzy ssh
sesję na scp
zdalnym 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 -3
zrobić scp
) wymaga dwóch kroków. Pierwszym niezbędnym krokiem jest ~/.ssh/config
skonfigurowanie 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 -3
opcji w następujący sposób:
scp -3 user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
Ta -3
opcja nakazuje scp
kierowanie 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.