SCP jest blisko spokrewniony z protokołem SSH i rzeczywiście narodził się z tego samego pomysłu.
SCP zapewnia, że dane pozostają poufne i nienaruszone podczas przesyłania jako rozszerzenie protokołu SSH.
Najpierw zrozumiemy, jak działa ten SCP, a następnie zobaczymy polecenia scp.
Spis treści:
Co to jest SCP?
SCP oznacza protokół bezpiecznego kopiowania.
Jest to bezpieczna i wydajna metoda kopiowania plików i katalogów między lokalnymi i zdalnymi hostami lub między dwoma zdalnymi hostami.
Jest szeroko stosowany do bezpiecznego przesyłania danych przez sieć. SCP polega na SSH (Secure Shell) w celu ustanowienia bezpiecznego połączenia i zaszyfrowania danych podczas przesyłania.
Niezależnie od tego, czy chcesz przenieść pojedynczy plik, czy cały katalog, SCP zapewnia niezawodne rozwiązanie do zdalnego przesyłania plików.
Jak działa SCP?
SCP jest zbudowany na protokole SSH – który jest kryptograficznym protokołem sieciowym do bezpiecznego zdalnego logowania i wykonywania poleceń. Wykorzystuje te same mechanizmy bezpieczeństwa co SSH, w tym szyfrowanie i uwierzytelnianie, aby chronić dane podczas transmisji.
Korzystając z SCP, użytkownik inicjuje polecenie kopiowania na komputerze lokalnym, które określa plik źródłowy i lokalizację docelową na komputerze zdalnym. SCP ustanawia połączenie SSH ze zdalnym systemem, a następnie bezpiecznie kopiuje pliki ze źródła do miejsca docelowego.
Kiedy używać SCP?
SCP jest szczególnie przydatny w następujących scenariuszach.
Zdalna kopia zapasowa serwera
SCP umożliwia tworzenie kopii zapasowych plików ze zdalnego serwera na maszynę lokalną lub odwrotnie, co zapewnia redundancję danych i odzyskiwanie po awarii.
Wdrażanie aplikacji
Upraszcza również ten proces, bezpiecznie kopiując niezbędne pliki do każdego systemu docelowego podczas wdrażania aplikacji na wielu serwerach,
Przesyłanie dużych plików
SCP oferuje godną zaufania i bezpieczną alternatywną metodę przesyłania danych w przypadku dużych plików, które mogą być zbyt duże, aby można je było wysłać jako załączniki do wiadomości e-mail.
Bezpieczne udostępnianie plików
SCP zapewnia, że dane są szyfrowane podczas przesyłania podczas wysyłania poufnych plików do innych osób.
Współpraca zdalna
SCP może służyć do bezpiecznego udostępniania plików współpracownikom lub członkom zespołu w różnych lokalizacjach.
Składnia polecenia SCP
Zanim zaczniemy używać polecenia SCP, zacznijmy od zrozumienia podstawowej składni.
Składnia polecenia SCP wygląda następująco:
scp [options] [source] [destination]
Wyjaśnienie składni
Opcje
Są to opcjonalne flagi, które modyfikują zachowanie komendy SCP. Możesz użyć różnych opcji, aby dostosować proces przesyłania. Oto kilka typowych opcji:
-r: Rekurencyjnie kopiuje katalogi i ich zawartość.
-p: Zachowaj uprawnienia, znaczniki czasu i tryby oryginalnego pliku.
-P: Określa numer portu dla połączenia SSH.
-i: Określa plik klucza prywatnego do uwierzytelniania SSH.
-C: Użyj kompresji, aby przyspieszyć transfer danych.
-l: Ogranicz przepustowość używaną do transferu (w Kbit/s).
-v: Tryb pełny – wyświetla komunikaty debugowania podczas przesyłania.
-o: przekazuje opcję klientowi SSH. Można go użyć do wyłączenia ścisłego sprawdzania klucza hosta.
Źródło
Źródło określa plik lub katalog, który chcesz skopiować. Może to być ścieżka lokalna lub ścieżka zdalna – w zależności od kontekstu.
Miejsce docelowe
Miejsce docelowe określa, gdzie chcesz skopiować źródło. Podobnie jak źródło, może to być również ścieżka lokalna lub ścieżka zdalna.
Przykłady poleceń
# 1. Skopiuj plik z lokalnego na zdalny serwer
scp /path/to/local/file.txt user@remotehost:/path/to/destination/
/path/to/local/file.txt: To jest plik źródłowy, który chcesz skopiować z komputera lokalnego.
user@remotehost: Zastąp użytkownika nazwą zdalnego użytkownika, a zdalnego hosta nazwą hosta lub adresem IP zdalnego serwera.
/ścieżka/do/miejsca docelowego/: To jest ścieżka docelowa na zdalnym serwerze, do którego zostanie skopiowany plik.
Przykład
W moim przypadku wybrałem jeden zdalny serwer do przesłania pliku.
Nazwa użytkownika hosta zdalnego – abhishekvarma
Adres zdalnego hosta – 192.168.29.70
scp /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Podczas łączenia się ze zdalną maszyną prosi o podanie hasła. Tutaj wybrałem plik zip do skopiowania.
Wyjście
Dane wyjściowe będą wyglądać tak, jeśli nie wystąpi błąd podczas łączenia się ze zdalnym serwerem.
sample.zip 100% 20KB 717.9KB/s 00:00
#2. Skopiuj plik ze zdalnego na lokalny komputer
scp user@remotehost:/path/to/remote/file.txt /path/to/local/destination/
Tak samo jak powyżej, zastąp adres użytkownika i hosta zdalnego.
Przykład
scp [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop
Wyjście
To tylko przykładowe wyjście w moim przypadku. Znacznik czasu różni się w zależności od szybkości połączenia.
sample.zip 100% 20KB 51.2KB/s 00:00
#3. Skopiuj katalog rekurencyjnie
scp user@remotehost:/path/to/remote/file.txt /path/to/local/destination/
Tutaj flaga ’-r’ mówi SCP, aby rekurencyjnie kopiował katalogi (w tym podkatalogi i ich zawartość).
Przykład
scp -r /home/vboxuser/Desktop [email protected]:/Users/abhishekvarma/Desktop
Tutaj wspomniałem o całym katalogu do skopiowania plików.
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 /path/to/local/*.txt user@remotehost:/path/to/destination/
*.txt — jest to wzorzec wieloznaczny, który pasuje do wszystkich plików z rozszerzeniem .txt w określonym katalogu lokalnym. Ścieżki źródłowe i docelowe są takie same jak poprzednio.
Przykład
scp /home/vboxuser/Desktop/locfolder/*.png [email protected]:/Users/abhishekvarma/Desktop
Wyjście
Tutaj próbowałem z rozszerzeniem .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 /path/to/local/file.txt user@remotehost:/path/to/destination/
Tutaj flaga ’-p’ zachowuje czasy modyfikacji, czasy 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 /path/to/local/file.txt user@remotehost:/path/to/destination/
Flaga „-P” określa inny port SSH (w tym przypadku 22) dla połączenia SCP. Możesz użyć dowolnego 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 /path/to/local/file.txt user@remotehost:/path/to/destination/
Ta flaga „-C” umożliwia kompresję podczas przesyłania, 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. Pełne dane wyjściowe do debugowania
scp -v /path/to/local/file.txt user@remotehost:/path/to/destination/
Ta opcja „-v” aktywuje pełne dane wyjściowe, które dostarczają bardziej szczegółowych informacji podczas 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 user@remotehost:/path/to/remote/file.txt /path/to/local/destination/
Te same wyjaśnienia, co w poprzednim szczegółowym przykładzie, z odwróconymi rolami lokalizacji lokalnych i zdalnych.
Przykład
scp -v [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop
Wyjście
Dane wyjściowe będą wyglądać tak.
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 /path/to/private_key.pem /path/to/local/file.txt user@remotehost:/path/to/destination/
Ta flaga „-i /path/to/private_key.pem” określa inny klucz prywatny SSH do uwierzytelniania.
Przykład
scp -i /path/to/private_key.pem /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Wyjście
Jeśli masz klucz prywatny, możesz go użyć lub możesz użyć klucza domyślnego.
sample.zip 100% 20KB 1.1MB/s 00:00
#11. Skopiuj wiele plików na serwer zdalny
scp file1.txt file2.txt user@remotehost:/path/to/destination/
To polecenie kopiuje plik1.txt i plik2.txt z katalogu lokalnego do określonego miejsca docelowego 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 o innej nazwie
scp user@remotehost:/path/to/remote/file.txt /path/to/local/newfilename.txt
To polecenie kopiuje plik.txt ze zdalnego serwera 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 /path/to/local/file.txt user@remotehost:/path/to/destination/
Ta flaga ’-l’ określa limit przepustowości w Kb/s (w tym przypadku 1000 Kb/s) dla transferu.
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 /path/to/local/source/ user@remotehost:/path/to/destination/
Flaga ’-p’ zachowuje atrybuty plików, a flaga -r rekurencyjnie kopiuje katalogi. To polecenie zachowuje również dowiązania symboliczne podczas kopiowania.
Przykład
scp -rp /home/vboxuser/Desktop/image.png [email protected]:/Users/abhishekvarma/Desktop
Wyjście
image.png 100% 39KB 1.8MB/s 00:00
#15. Pełne kopiowanie plików z kompresją
scp -vC /path/to/local/file.txt user@remotehost:/path/to/destination/
To polecenie łączy zarówno pełne dane wyjściowe (-v), jak i kompresję (-C) podczas przesyłania plików.
Przykład
scp -vC /home/vboxuser/Desktop/image.png [email protected]:/Users/abhishekvarma/Desktop
Wyjście
Dane wyjściowe będą wyglądać tak.
scp: debug1: fd 3 clearing O_NONBLOCK Sending file modes: C0664 40050 image.png Sink: C0664 40050 image.png image.png d 6 clearing O_NONBLOCK scp: debug1: fd • clearing O_NONBLOCK image.png debug1: client_input_channel_req: channel ✪ type exit-status reply debug1: channel 0: free: client-session, channels 1 Transferred: sent 40220, received 2576 bytes, in 0.1 seconds Bytes per second: sent 352570.0, received 22581.3 root@ubuntu: ~ debug1: Exit status 0 debug1: compress outgoing: raw data 40287, compressed 38198, factor 0.95 debug1: compress incoming: raw data 792, compressed 757, factor 0.96
#16. Kopiowanie między dwoma zdalnymi serwerami
Jeśli chcesz przenieść pliki z jednego zdalnego serwera na inny, możesz użyć tego polecenia.
scp user1@remotehost1:/path/to/remote/file.txt user2@remotehost2:/path/to/destination/
To polecenie bezpośrednio przesyła plik.txt z hosta zdalnego1 do hosta zdalnego2.
Przykład
scp user1@remotehost1:/path/to/remote/file.txt [email protected]:/Users/abhishekvarma/Desktop
Wyjście
file.txt 100% 512KB 512.0KB/s 00:00
Jeśli podczas przesyłania wystąpią jakiekolwiek błędy lub problemy – na wyjściu mogą zostać wyświetlone komunikaty o błędach, które dostarczają informacji o tym, co poszło nie tak.
ssh: connect to host source.example.com port 22: Connection refused lost connection
W takim przypadku komunikat o błędzie sugeruje, że połączenie SSH z serwerem źródłowym zostało odrzucone. Może to wynikać z różnych przyczyn, takich jak nieprawidłowa nazwa hosta, adres IP, port lub problemy z konfiguracją SSH.
Często zadawane pytania dotyczące SCP
Oto kilka często zadawanych pytań związanych z protokołem SCP wraz z odpowiedziami.
Czym SCP różni się od FTP lub SFTP?
FTP oznacza protokół przesyłania plików.
SFTP oznacza protokół przesyłania plików. Oba są używane do przesyłania plików.
SCP działa przez SSH i oferuje zarówno szyfrowanie, jak i uwierzytelnianie w jednym protokole, co czyni go bezpieczniejszym i wydajniejszym.
Kiedy powinienem używać SCP?
SCP najlepiej nadaje się do scenariuszy, w których wymagany jest bezpieczny i niezawodny transfer plików, takich jak zdalne kopie zapasowe, wdrażanie oprogramowania, dystrybucja plików konfiguracyjnych i współpraca między członkami zespołu.
Czy protokół SCP jest zgodny z adresami IPv6?
Tak, SCP obsługuje zarówno adresy IPv4, jak i IPv6, co umożliwia przesyłanie plików przez sieci korzystające z dowolnego schematu adresowania.
Wniosek✍️
Mam nadzieję, że ten artykuł okazał się pomocny w poznawaniu SCP i jego działania.
Możesz być także zainteresowany poznaniem poleceń systemu Linux dla administratora systemu