Kiedy kiedyś chciałeś przesłać pliki przez sieć komputerów, czy spotkałeś się z wyzwaniami bezpieczeństwa? Nie możesz po prostu wrzucić plików do sieci i mieć nadzieję, że będą bezpieczne, jak Czerwony Kapturek! Musisz zastosować środki bezpieczeństwa. Powinieneś użyć protokołu transferu plików, który zabezpiecza twoje dane przed nieuprawnionym dostępem, podsłuchem sieci, naruszeniami bezpieczeństwa i innymi zagrożeniami.
Secure Copy Protocol (SCP) to zaawansowany protokół sieciowy transferu plików, który przesyła pliki między różnymi maszynami w sieci. W tym artykule poznamy ten protokół bliżej i zbadamy możliwości użycia SCP do transferu z maszyn zdalnych na lokalne.
Jak działa SCP?
SCP używa SSH (Secure Shell) do przesyłania plików. Ale co to w ogóle oznacza? SSH to protokół sieciowy umożliwiający bezpieczny dostęp zdalny do serwerów. Wyposażony jest w metody autentykacji, szyfrowania i weryfikacji integralności przesyłanych danych. SCP opiera się na tych funkcjach bezpieczeństwa i metodach szyfrowania oferowanych przez SSH, aby bezpiecznie przesyłać pliki w sieci. Dzięki temu możesz używać SCP między serwerami zdalnymi i lokalnymi, mając pewność autentyczności i poufności swoich danych.
Używanie SCP do transferu plików; Dlaczego i jak?
Przesyłanie plików z systemu zdalnego na lokalny i z lokalnego na zdalny to wydajny i elastyczny sposób transferu danych. SCP ma kilka istotnych zalet. Na przykład oferuje wyższą bezpieczność niż inne metody transferu plików, takie jak FTP. Innym ważnym atrybutem SCP jest prędkość. SCP jest zazwyczaj znacznie szybszy niż inne protokoły i świetnie sprawdza się do przesyłania plików między maszynami Linux.
Możesz przenosić pliki za pomocą SCP:
- Z komputera lokalnego na zdalny
- Z komputera zdalnego na lokalny
- Z jednego komputera zdalnego na inny.
Przejdźmy teraz do praktycznego użycia składni SCP. Najpierw musisz skonfigurować SSH na obu komputerach. Warto jednak zauważyć, że SSH jest zwykle preinstalowany na maszynach Linux. Jeśli tak jest w Twoim przypadku, możesz pominąć te kroki.
1. Konfigurowanie SSH
Uruchom poniższe polecenie, aby zainstalować SSH:
sudo apt install openssh-client
2. Generowanie kluczy SSH
Urządzenie klienckie musi następnie nawiązać połączenie SSH. Do nawiązania bezpiecznego połączenia między maszyną klienta a serwerem niezbędny jest klucz prywatny i publiczny. To polecenie generuje dla Ciebie parę kluczy SSH:
ssh-keygen
Po uruchomieniu tego polecenia pojawi się prośba o nazwę pary kluczy i hasło (opcjonalne). Gdy para kluczy zostanie utworzona, musisz skopiować klucz publiczny na maszynę serwera.
Spójrzmy teraz na ogólną postać polecenia SCP:
scp [options] [source username@IP]:/[directory/file name] [destination username@IP]:/[directory]
- [opcje] - Pierwszy nawiasem można zastąpić różnymi opcjami polecenia SCP, do których przejdziemy później.
- [użytkownik@IP_źródła] - Zawiera nazwę użytkownika i adres IP komputera, z którego przesyłasz. Na przykład: [email protected]
- [ścieżka/nazwa_pliku] - Zawiera lokalizację pliku, który chcesz przesłać.
- [użytkownik@IP_docelowy] - Zawiera nazwę użytkownika i adres IP maszyny odbierającej.
- [katalog] - Zamień to na żądaną lokalizację pliku na komputerze zdalnym.
Skoro już wiesz, jak wygląda ogólne polecenie, spójrzmy na wszystkie przydatne opcje SCP:
| Opcja | Przypadek użycia |
| -C |
Ta opcja kompresuje pliki podczas przesyłania.
|
| -c <cipher> |
Możesz użyć tej opcji, aby określić konkretny szyfr. Na przykład: scp -c <aes128-ctr>.
|
| -v |
Ta opcja pokazuje krok po kroku przebieg procesu.
|
| -l <limit in kilobytes> |
Ta opcja pozwala ustawić limit maksymalnej przepustowości. Na przykład, poniższe polecenie ustawia przepustowość na 100 kb na sekundę: scp -l 100
|
| -P |
Ta opcja pozwala zmienić port SSH komputera zdalnego, do którego chcesz się połączyć. SCP domyślnie używa portu 22.
|
| -S <nazwa programu> |
Możesz użyć tej opcji, aby wybrać program do nawiązania połączenia.
|
| -r |
Kopiuj cały plik lub katalog rekursywnie.
|
Transfer plików za pomocą SCP
Pamiętasz, że mamy trzy typy transferów za pomocą SCP? Teraz chcemy zbadać każdy typ transferu osobno. Ale najpierw zdefiniujmy cel. Mam zdjęcie kota na pulpicie komputera Linux i w pierwszym kroku chcę przenieść je na zdalny serwer Linux. Następnie przeniosę je z powrotem na mój komputer lokalny. Na koniec szczęśliwy kot przeniesie się między dwiema zdalnymi maszynami.

SCP z lokalnej na zdalną
To polecenie przesyła plik z komputera lokalnego na serwer zdalny:
scp [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
Aby użyć polecenia scp z hasłem, wpisz hasło do serwera zdalnego. To wszystko.

SCP ze zdalnej na lokalną
Aby odwrócić ten proces, nie musisz uzyskiwać dostępu do terminala serwera zdalnego. Na terminalu komputera lokalnego wpisz to polecenie:
scp [username]@[IP address of the remote machine]:[path/to/the/file] [path/to/the/location]
Jak widzisz, właśnie odwróciliśmy dwie części tego polecenia.

SCP między dwoma maszynami zdalnymi
Teraz przenieśmy kota między dwiema zdalnymi maszynami. Ten krok wymaga hasła do obu maszyn zdalnych, dlatego upewnij się, że je masz. Użyj tego polecenia, aby przenieść plik między dwoma komputerami zdalnymi:
scp [username of the 1st remote machine]@[IP address of the 1st remote machine]:[path/to/the/file] [username of the 2nd remote machine]@[IP address of the 2nd remote machine]:/[path/to/location]

Inne popularne polecenia SCP
Najczęstsze polecenia SCP to scp z maszyny zdalnej na lokalną, scp z maszyny lokalnej na zdalną oraz SCP między dwoma hostami zdalnymi. Ale na tym nie poprzestańmy i zbadajmy kilka innych przydatnych przykładów użycia scp Linux.
1. Rekurencyjne kopiowanie całego katalog
Wyobraź sobie, że chcesz przenieść cały katalog ze wszystkimi plikami w nim zawartymi. Przenoszenie tych plików jeden po jednym byłoby bardzo czasochłonne. Zamiast tego możesz użyć polecenia scp do przeniesienia wielu plików, aby skopiować katalog rekurencyjnie:
scp -r [Path/to/directory] [username of the remote server]@[Ip address]:/[path/to/the/location]
To może być przydatne w wielu scenariuszach:
- Wdrażanie kodu: podczas wdrażania kodu lub aplikacji internetowych, możesz potrzebować przenieść cały katalog ze wszystkimi jego komponentami, takimi jak pliki i skrypty.
- Kopia zapasowa i synchronizacja: Jeśli chcesz mieć kopię zapasową całego katalog lub chcesz zsynchronizować dwa katalogi na maszynie lokalnej i serwerze zdalnym, musisz skopiować wszystko rekurencyjnie.
- Migracja Systemu: Kluczowym zadaniem migracji systemów jest skopiowanie i przeniesienie każdej ważnej informacji. Polecenie SCP z opcją -r upewni się, że niczego nie przegapisz podczas przenoszenia.
2. Ograniczanie przepustowości
Jeśli chcesz kontrolować szybkość przenoszenia danych, możesz użyć tego polecenia:
scp -l <limit> [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
Dlaczego miałbyś to robić?
W tych dwóch scenariuszach możesz użyć składni scp Linux, aby ustawić limit na przepustowość:
- Przeciążenie sieci: Jeśli sieć jest wysoko obciążona, ograniczenie przepustowości za pomocą scp może pomóc w lepszym rozdzieleniu zasobów sieciowych. Ograniczenie przepustowości za pomocą SCP zapewnia, że inne zadania związane z siecią działają bez problemów. Jest to również ważne przy przesyłaniu plików przez sieć współdzieloną, gdzie proces może utrudnić aktywność sieciową innym użytkownikom.
- Transfery w tle: Podczas transferów SCP w tle, takich jak automatyczne kopie zapasowe lub procesy synchronizacji, istnieje szansa, że te zadania zużyją zasoby sieciowe. W takim przypadku możesz ograniczyć przepustowość tych procesów transferu, aby lepiej zarządzać zasobami.
3. Uzyskiwanie szczegółowego dziennika
Użycie opcji -v z SCP da ci szczegółowy dziennik dodatkowych informacji o procesie transferu. Możesz użyć poniższego polecenia, aby uzyskać szczegółowe informacje zwrotne:
scp -v [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
Dlatego powinieneś pamiętać i używać to polecenie:
- Rozwiązywanie problemów: ta opcja pokazuje postęp transferu w akcji. Możesz zobaczyć informacje, takie jak rozmiar pliku i procent ukończenia. Daje ci też komunikaty o błędach i ostrzeżenia. Połączenie tych danych pozwala monitorować i rozwiązywać problemy z procesem transferu w razie potrzeby.
4. Określanie portu SSH
Korzystając ze składni Linux scp z opcją -P, możesz zmienić port SSH. Oto polecenie, które to umożliwia:
scp -P [port number] [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
Może to być przydatne w następujących sytuacjach:
- Konfiguracja Firewall: Jeśli domyślny port SSH jest zablokowany lub chcesz ukryć usługę SSH przed potencjalnymi zagrożeniami, możesz zmienić port SSH.
Czy istnieją jakieś alternatywy dla SCP?
SCP jest szybki i bezpieczny, a znając prawidłową składnię Linux scp i podstawy rozwiązywania problemów, może być jedynym narzędziem, które potrzebujesz. Nie ma jednak nic złego w zapoznaniu się z jego alternatywami.
1. rsync
rsync to wszechstronne narzędzie do transferu plików ze zaawansowanymi możliwościami synchronizacji, transferami przyrostowymi oraz kopiowaniem zdalne i lokalne. Może również zmniejszyć użycie pasma transferując tylko różnice między plikami źródłowymi i docelowymi. Kolejną zaletą rsync jest możliwość wznowienia przerwanych transferów z punktu, w którym się zatrzymały.
Zalety rsync
- Wydajna synchronizacja plików i katalogów.
- Obsługuje algorytm delta-transfer, zmniejszając ilość przesyłanych danych.
- Możliwość wznowienia przerwanych transferów.
rsync Wady
- Wymaga zainstalowania rsync na systemach źródłowym i docelowym.
- Wymaga większej konfiguracji i więcej opcji poleceń niż scp.
2. SFTP (Protokół transferu plików SSH)
SFTP zapewnia bezpieczny sposób transferu plików przez SSH. Oferuje funkcjonalność podobną do FTP, ale działa na szyfrowanym połączeniu SSH, tak jak SCP. W niektórych aspektach jednak przewagi SFTP przewyższają przewagi SCP. SCP nie może generować list katalogów, tworzyć ani usuwać katalogów, itd. SFTP może wykonywać wszystkie te zadania.
Zalety SFTP
- Bezpieczny transfer plików z szyfrowaniem.
- Możliwości zdalnego zarządzania plikami.
- Szeroka dostępność na większości systemów Linux i Unix.
Wady SFTP
- Składnia poleceń i użycie różnią się od tradycyjnego FTP.
- Może mieć ograniczoną obsługę w niektórych systemach wbudowanych lub urządzeniach.
3. FTP (Protokół Transferu Plików)
FTP to szeroko stosowany standardowy protokół transferu plików. Operuje w modelu klient-serwer i oferuje podstawową funkcjonalność transferu plików.
Zalety FTP
- Szeroka obsługa na różnych platformach.
- Dostępne znane klienty wiersza polecenia i graficzne.
Wady FTP
- Brak szyfrowania i niższa bezpieczeństwo w porównaniu z scp i sftp.
- Może wymagać dodatkowej konfiguracji zapory sieciowej do nawiązania połączeń.
- Uwierzytelnianie w postaci zwykłego tekstu.
Podsumowując, podczas gdy scp jest prostym i niezawodnym wyborem do bezpiecznego transferu plików przez SSH, alternatywy takie jak rsync, sftp i FTP mogą oferować dodatkowe funkcje i elastyczność w zależności od konkretnych wymagań.
Jak wybrać właściwy? Weź pod uwagę bezpieczeństwo, potrzeby synchronizacji, łatwość obsługi oraz zgodność z Twoimi systemami i protokołami. Na przykład, jeśli bezpieczeństwo i poufność danych są najważniejsze przy transferze plików, FTP nie jest dobrym wyborem.
Wnioski
SCP to szybkie i bezpieczne narzędzie do transferu plików między komputerami. Możesz używać SCP do przesyłania z serwera zdalnego na komputer lokalny, z lokalnego na zdalny, a nawet między dwoma systemami zdalnymi. Choć istnieją alternatywy takie jak rsync, SCP je prześciga pod wieloma względami, zwłaszcza w kwestii bezpieczeństwa i szybkości. W tym wpisie omówiliśmy SCP, jego zastosowania, alternatywy i udostępniliśmy ściągawkę z najczęściej używaną składnią.
Często zadawane pytania
Czy powinienem być świadomy jakichś zagrożeń bezpieczeństwa podczas używania SCP ze zdalnej na lokalną?
SCP to dość bezpieczne narzędzie i nie musisz się obawiać zagrożeń bezpieczeństwa podczas jego używania. Zawsze jednak warto zastosować dodatkowe środki bezpieczeństwa, jakie możesz.
Jakie są najczęstsze błędy występujące podczas używania SCP ze zdalnej na lokalną?
Podczas transferu plików z serwera zdalnego na komputer lokalny za pomocą SCP użytkownicy mogą napotkać kilka typowych błędów. Oto dwa z nich:
- Brak takiego pliku lub katalogu: ten błąd pojawia się, gdy nie podałeś właściwego numeru portu, ustawienia uprawnień do pliku są nieprawidłowe lub informacje logowania są błędne.
- Weryfikacja klucza hosta nie powiodła się: ten błąd pojawiają się, gdy klucz hosta zmienił się z powodu aktualizacji serwera. Klucz hosta potwierdza, że wcześniej łączyłeś się z tym serwerem. Gdy weryfikacja się nie powiedzie, oznacza to, że tożsamość serwera uległa zmianie. Ten błąd chroni Cię przed połączeniem się z sfałszowanym serwerem.
Jak mogę używać SCP do przesyłania plików między systemami zdalnymi?
Aby pomyślnie transferować pliki między systemami za pomocą SCP, oba komputery muszą być dostępne przez SSH. Potrzebujesz także adresu IP i hasła do maszyn zdalnych. Reszta to już tylko użycie właściwej komendy SCP:
scp [username of the 1st remote machine]@[IP address of the 1st remote machine]:[path/to/the/file] [username of the 2nd remote machine]@[IP address of the 2nd remote machine]:/[path/to/location]
Po wpisaniu tej komendy zostaniesz poproszony o podanie hasła do serwerów. Po tym Twój plik będzie przesyłany.