Protokół SCP, blisko spokrewniony z SSH, wywodzi się z podobnej koncepcji.
SCP, jako rozszerzenie SSH, gwarantuje poufność i integralność danych podczas ich przesyłania.
Zanim przejdziemy do poleceń SCP, najpierw zrozumiemy jego działanie.
Czym jest SCP?
SCP, czyli Secure Copy Protocol, to protokół bezpiecznego kopiowania.
Jest to bezpieczna i efektywna metoda transferu plików oraz katalogów pomiędzy komputerami lokalnymi i zdalnymi, jak również pomiędzy dwoma zdalnymi systemami.
Jest powszechnie stosowany do bezpiecznego przesyłania danych w sieci. SCP wykorzystuje SSH (Secure Shell) do ustanowienia chronionego połączenia i szyfrowania danych podczas ich transferu.
Niezależnie od tego, czy chcesz przenieść pojedynczy plik, czy cały zbiór katalogów, SCP stanowi niezawodne rozwiązanie do zdalnego przesyłania plików.
Jak działa SCP?
SCP bazuje na protokole SSH, który jest kryptograficznym protokołem sieciowym umożliwiającym bezpieczne zdalne logowanie i wykonywanie poleceń. Wykorzystuje on mechanizmy bezpieczeństwa SSH, takie jak szyfrowanie i uwierzytelnianie, w celu ochrony danych w trakcie transmisji.
Używając SCP, użytkownik inicjuje polecenie kopiowania na swoim komputerze, określając plik źródłowy oraz lokalizację docelową na maszynie zdalnej. SCP nawiązuje połączenie SSH ze zdalnym systemem, a następnie bezpiecznie kopiuje pliki ze źródła do celu.
Kiedy używać SCP?
SCP jest szczególnie przydatny w następujących przypadkach.
Zdalne kopie zapasowe serwera
SCP umożliwia wykonywanie kopii zapasowych plików z serwera zdalnego na komputer lokalny lub odwrotnie, co zapewnia redundancję danych i odzyskiwanie po awarii.
Wdrażanie aplikacji
Upraszcza również proces wdrażania aplikacji, bezpiecznie kopiując niezbędne pliki do systemów docelowych.
Przesyłanie dużych plików
SCP to niezawodny i bezpieczny sposób przesyłania obszernych plików, które mogą być za duże, aby wysłać je jako załączniki do wiadomości e-mail.
Bezpieczne udostępnianie plików
Dzięki szyfrowaniu podczas przesyłania, SCP zapewnia bezpieczeństwo podczas wysyłania poufnych danych do innych osób.
Współpraca zdalna
SCP umożliwia bezpieczne udostępnianie plików współpracownikom lub członkom zespołu pracującym w różnych lokalizacjach.
Składnia polecenia SCP
Zanim zaczniesz używać polecenia SCP, poznajmy jego podstawową składnię.
Składnia polecenia SCP prezentuje się następująco:
scp [opcje] [źródło] [cel]
Wyjaśnienie składni:
Opcje
Opcje to opcjonalne flagi, które modyfikują działanie polecenia SCP. Możesz korzystać z różnorodnych opcji, aby dostosować proces przesyłania. Poniżej znajdziesz kilka najczęściej spotykanych opcji:
-r: Kopiuje katalogi wraz z ich zawartością rekurencyjnie.
-p: Zachowuje uprawnienia, daty i tryby oryginalnego pliku.
-P: Określa numer portu dla połączenia SSH.
-i: Wskazuje plik klucza prywatnego do uwierzytelniania SSH.
-C: Włącza kompresję w celu przyspieszenia transferu danych.
-l: Ogranicza przepustowość transferu (w Kbit/s).
-v: Tryb szczegółowy – wyświetla komunikaty debugowania podczas przesyłania.
-o: Przekazuje opcję do klienta SSH. Można jej użyć do wyłączenia ścisłego sprawdzania klucza hosta.
Źródło
Źródło to plik lub katalog, który chcesz skopiować. Może to być ścieżka lokalna lub zdalna, w zależności od kontekstu.
Cel
Cel to miejsce, do którego chcesz skopiować źródło. Podobnie jak źródło, może to być ścieżka lokalna lub zdalna.
Przykłady poleceń
#1. Skopiuj plik z komputera lokalnego na serwer zdalny
scp /ścieżka/do/lokalnego/pliku.txt użytkownik@zdalnyhost:/ścieżka/do/celu/
/ścieżka/do/lokalnego/pliku.txt: to plik źródłowy, który chcesz skopiować z Twojego komputera.
użytkownik@zdalnyhost: Zastąp „użytkownik” nazwą zdalnego użytkownika, a „zdalnyhost” nazwą hosta lub adresem IP zdalnego serwera.
/ścieżka/do/celu/: to ścieżka docelowa na serwerze zdalnym, do której zostanie skopiowany plik.
Przykład:
W moim przypadku wybrałem serwer zdalny, aby tam przesłać plik.
Nazwa użytkownika na zdalnym hoście: abhishekvarma
Adres zdalnego hosta: 192.168.29.70
scp /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Podczas łączenia z maszyną zdalną system poprosi o hasło. W tym przypadku do skopiowania wybrałem plik zip.
Wyjście:
Tak będzie wyglądać wynik, jeśli nie wystąpi błąd podczas łączenia z serwerem zdalnym.
sample.zip 100% 20KB 717.9KB/s 00:00
#2. Skopiuj plik z serwera zdalnego na komputer lokalny
scp użytkownik@zdalnyhost:/ścieżka/do/zdalnego/pliku.txt /ścieżka/do/lokalnego/celu/
Podobnie jak wcześniej, zastąp adres użytkownika i hosta zdalnego.
Przykład:
scp [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop
Wyjście:
To jest tylko przykładowy wynik w moim przypadku. Czas transferu może się różnić w zależności od szybkości połączenia.
sample.zip 100% 20KB 51.2KB/s 00:00
#3. Skopiuj katalog rekurencyjnie
scp użytkownik@zdalnyhost:/ścieżka/do/zdalnego/pliku.txt /ścieżka/do/lokalnego/celu/
Flaga ’-r’ informuje SCP, aby rekurencyjnie kopiował katalogi (wraz z podkatalogami i ich zawartością).
Przykład:
scp -r /home/vboxuser/Desktop [email protected]:/Users/abhishekvarma/Desktop
Tutaj określiłem, że ma zostać skopiowany cały katalog wraz z jego zawartością.
Wyjście:
sample.zip 100% 20KB 1.0MB/s 00:00 Screenshot from 2023-08-13 21-45-23.png 100% 27KB 1.5MB/s 00:00 .swp 100% 12KB 894.2KB/s 00:00 .help.swp 100% 12KB 780.4KB/s 00:00
#4. Skopiuj pliki pasujące do wzorca
scp /ścieżka/do/lokalnego/*.txt użytkownik@zdalnyhost:/ścieżka/do/celu/
*.txt – to symbol wieloznaczny, który pasuje do wszystkich plików z rozszerzeniem .txt w danym katalogu lokalnym. Ścieżki źródłowa i docelowa są takie same, jak wcześniej.
Przykład:
scp /home/vboxuser/Desktop/locfolder/*.png [email protected]:/Users/abhishekvarma/Desktop
Wyjście:
Próbowałem tutaj użyć rozszerzenia .png.
Screenshot from 2023-08-13 21-45-23.png 100% 27KB 1.4MB/s 00:00 Screenshot from 2023-08-13 21-55-28.png 100% 24KB 1.7MB/s 00:00 Screenshot from 2023-08-13 22-04-03.png 100% 38KB 2.1MB/s 00:00
#5. Zachowaj atrybuty plików
scp -p /ścieżka/do/lokalnego/pliku.txt użytkownik@zdalnyhost:/ścieżka/do/celu/
Flaga ’-p’ zachowuje czasy modyfikacji, dostępu i tryby pliku źródłowego podczas kopiowania.
Przykład:
scp -p /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Wyjście:
sample.zip 100% 20KB 420.0KB/s 00:00
#6. Określ inny port SSH
scp -P 22 /ścieżka/do/lokalnego/pliku.txt użytkownik@zdalnyhost:/ścieżka/do/celu/
Flaga ’-P’ określa inny port SSH (w tym przypadku 22) dla połączenia SCP. Możesz użyć dowolnego innego portu.
Przykład:
scp -P 22 /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Wyjście:
sample.zip 100% 20KB 1.2MB/s 00:00
#7. Kopiuj z kompresją
scp -C /ścieżka/do/lokalnego/pliku.txt użytkownik@zdalnyhost:/ścieżka/do/celu/
Flaga ’-C’ włącza kompresję podczas transferu, potencjalnie zmniejszając rozmiar przesyłanych danych. Adres źródłowy i docelowy są takie same, jak wyjaśniono wcześniej.
Przykład:
scp -C /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Wyjście:
sample.zip 100% 20KB 985.8KB/s 00:00
#8. Szczegółowe dane wyjściowe do debugowania
scp -v /ścieżka/do/lokalnego/pliku.txt użytkownik@zdalnyhost:/ścieżka/do/celu/
Opcja ’-v’ aktywuje szczegółowe dane wyjściowe, dostarczając więcej informacji w trakcie procesu przesyłania.
Przykład:
scp -v /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Wyjście:
Przykładowe dane wyjściowe będą wyglądać następująco:
Executing: program /usr/bin/ssh host 192.168.29.70, user abhishekvarma, command scp -v -t /Users/abhishekvarma/Desktop OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files debug1: /etc/ssh/ssh_config line 21: Applying options for * debug1: Connecting to 192.168.29.70 [192.168.29.70] port 22. debug1: Connection established. debug1: identity file /root/.ssh/id_rsa type -1 debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa_sk type -1 debug1: identity file /root/.ssh/id_ecdsa_sk-cert type -1
#9. Kopiuj ze zdalnego do lokalnego z pełnymi danymi wyjściowymi
scp -v użytkownik@zdalnyhost:/ścieżka/do/zdalnego/pliku.txt /ścieżka/do/lokalnego/celu/
Te same objaśnienia, co w poprzednim przykładzie, ale z zamienionymi rolami lokalizacji lokalnej i zdalnej.
Przykład:
scp -v [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop
Wyjście:
Dane wyjściowe będą wyglądać następująco:
Executing: program /usr/bin/ssh host 192.168.29.70, user abhishekvarma, command scp -v -f /Users/abhishekvarma/Desktop/sample.zip OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022 debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 21: Applying options for * debug1: Connecting to 192.168.29.70 [192.168.29.70] port 22. debug1: Connection established. debug1: identity file /root/.ssh/id_rsa type -1 debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa_sk type -1 debug1: identity file /root/.ssh/id_ecdsa_sk-cert type -1
#10. Skopiuj przy użyciu innego klucza SSH
scp -i /ścieżka/do/klucza_prywatnego.pem /ścieżka/do/lokalnego/pliku.txt użytkownik@zdalnyhost:/ścieżka/do/celu/
Flaga ’-i /ścieżka/do/klucza_prywatnego.pem’ wskazuje na użycie innego klucza prywatnego SSH do uwierzytelnienia.
Przykład:
scp -i /ścieżka/do/klucza_prywatnego.pem /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Wyjście:
Jeśli posiadasz klucz prywatny, możesz go użyć, w przeciwnym razie system użyje klucza domyślnego.
sample.zip 100% 20KB 1.1MB/s 00:00
#11. Skopiuj wiele plików na serwer zdalny
scp plik1.txt plik2.txt użytkownik@zdalnyhost:/ścieżka/do/celu/
To polecenie kopiuje plik1.txt i plik2.txt z lokalnego katalogu do określonej lokalizacji na serwerze zdalnym.
Przykład:
scp /home/vboxuser/Desktop/image.png /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Wyjście:
image.png 100% 39KB 1.4MB/s 00:00 sample.zip 100% 20KB 1.5MB/s 00:00
#12. Skopiuj plik zdalny z inną nazwą
scp użytkownik@zdalnyhost:/ścieżka/do/zdalnego/pliku.txt /ścieżka/do/lokalnego/nowanazwa.txt
To polecenie kopiuje plik.txt z serwera zdalnego do katalogu lokalnego, zmieniając jego nazwę na nowanazwapliku.txt.
Przykład:
scp [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop/newfile.zip
Wyjście:
Stare i nowe rozszerzenia plików powinny być takie same podczas wykonywania tego polecenia.
sample.zip 100% 20KB 28.7KB/s 00:00
#13. Kopiowanie z określonym limitem przepustowości
scp -l 1000 /ścieżka/do/lokalnego/pliku.txt użytkownik@zdalnyhost:/ścieżka/do/celu/
Flaga ’-l’ określa limit przepustowości transferu w Kb/s (w tym przypadku 1000 Kb/s).
Przykład:
scp -l 300 /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Wyjście:
sample.zip 100% 20KB 31.3KB/s 00:00
#14. Kopiowanie plików i zachowywanie dowiązań symbolicznych
scp -rp /ścieżka/do/lokalnego/źródła/ użytkownik