Jak używać polecenia scp do bezpiecznego przesyłania plików w systemie Linux

Załóżmy, że chcesz przenieść niektóre pliki między serwerami w systemie Linux. Zadanie to można wykonać na wiele sposobów, ale jeśli priorytetem jest bezpieczne przesyłanie plików, pozostaje kilka opcji. Najłatwiejszym rozwiązaniem jest użycie polecenia scp lub bezpiecznego kopiowania, aby przesłać pliki bez martwienia się o bezpieczeństwo. W tym artykule wyjaśnimy, jak bezpiecznie przesyłać pliki za pomocą polecenia scp w systemie Linux.

Przesyłaj pliki za pomocą polecenia scp w systemie Linux (2023)

Co to jest polecenie scp w systemie Linux

Jeśli chodzi o przesyłanie plików przez bezpieczną sieć, polecenie scp może być bardzo przydatne. Oznacza Secure Copy Protocol i przesyła pliki i katalogi między dwoma systemami przez połączenie SSH (Secure Shell). Dzięki ssh możesz być pewien bezpieczeństwa swoich plików, ponieważ są one domyślnie szyfrowane. Mówiąc prościej, polecenie scp jest bezpieczniejszą wersją polecenia cp, o której można przeczytać w naszym artykule dotyczącym poleceń terminala Linux.

Jak korzystać z polecenia scp: składnia i opcje

Zanim będziemy mogli przesyłać pliki przez scp, zobaczmy tutaj składnię i opcje polecenia:

scp <[email protected]_adres_ip:ścieżka/do/źródła/pliku> <[email protected]_ip_address:cel/ścieżka>

Zrozumienie składni:

  • Po pierwsze, <[email protected]_ip_address:ścieżka/do/źródła/pliku> określa system „źródłowy”, z którego należy przenieść pliki/katalogi.
  • Po drugie, <[email protected]_ip_address:target/path> określa system „docelowy”, do którego chcesz przenieść swoje pliki/katalogi.

Jeśli pozostawisz jeden z powyższych parametrów, polecenie scp w systemie Linux najpierw wyszuka plik, a następnie skopiuje go lokalnie. Niektóre opcje parowania z poleceniem to:

OpcjeDestination-POkreśla, który port ma łączyć się z systemem hosta. Jeśli zostanie pominięty, domyślnie będzie używany port 22. -pZachowuje czasy modyfikacji, czasy dostępu i tryby z oryginalnego pliku podczas kopiowania do systemu docelowego. -rRekursywnie kopiuje cały katalog do systemu docelowego.-JUżywany do łączenia system źródłowy i system docelowy przez system proxy (host skoku).-3gdy ta flaga jest używana, kopiuje pliki zarówno do systemu docelowego, jak i do systemu lokalnego-4wymusza na poleceniu scp używanie tylko adresów IPv4.-6wymusza polecenie scp, aby używać tylko adresów IPv6.

Jak kopiować pliki za pomocą polecenia scp

Przed użyciem polecenia scp w systemie Linux należy spełnić pewne wymagania wstępne zarówno w systemie hosta, jak iw systemie docelowym:

  • ssh powinien być zainstalowany
  • dostęp root lub dowolny użytkownik z uprawnieniami sudo

Skopiuj pliki z lokalnego hosta do zdalnego celu

Jeśli masz plik, który chcesz przenieść z systemu lokalnego do zdalnego miejsca docelowego, musisz użyć następującej składni:

scp <ścieżka_do_pliku_lokalnego> @:<ścieżka_do_sklepu_w_zdalnym_miejscu docelowym>

Jeśli powyższa składnia może wydawać się skomplikowana, przykład ją wyjaśni:

scp test.txt [email protected]:/home/remote2/Dokumenty/

W powyższym przykładzie:

  • test.txt to nazwa pliku do przesłania, który znajduje się w bieżącym katalogu systemu lokalnego.
  • test to nazwa użytkownika w systemie docelowym.
  • 139.144.11.105 to adres IP systemu docelowego.
  • /home/remote2/Documents/ to lokalizacja w systemie docelowym, w której zostanie zapisany przesłany plik.

Skopiuj pliki ze zdalnego hosta do lokalnego celu

Jeśli chcesz przesłać plik ze zdalnego hosta na komputer lokalny, użyj następującej składni polecenia scp w systemie Linux:

scp @:<ścieżka_pliku_do_transferu> <ścieżka_do_pliku_sklepu>

Załóżmy na przykład, że musisz przesłać plik o nazwie test.py ze zdalnego serwera, na którym pracujesz, użyj tego polecenia:

scp [email protected]:/home/test/test1.py ~/test1.py

W tym przykładzie:

  • test to nazwa użytkownika zdalnego hosta.
  • 10.10.11.113 to adres IP zdalnego hosta.
  • /home/test/test1.py to ścieżka do pliku, który ma zostać przesłany ze zdalnego hosta.
  • ~/test1.py to nazwa pliku po przesłaniu go na komputer lokalny i zapisaniu w katalogu domowym.

Przesyłaj pliki z jednego zdalnego hosta do innego zdalnego celu

Za pomocą polecenia scp możesz nie tylko przesyłać pliki między systemem lokalnym a maszyną zdalną, ale także przesyłać pliki między dwoma systemami zdalnymi. Zanim jednak będzie można przesyłać pliki z jednego systemu zdalnego do innego, zaleca się wygenerowanie prywatnego klucza ssh i publicznego klucza ssh w systemie źródłowym oraz przechowywanie kopii klucza publicznego w systemie docelowym.

Ogólnie rzecz biorąc, użytkownicy narzekają na błąd „Weryfikacja klucza hosta nie powiodła się” podczas przesyłania plików między dwoma zdalnymi systemami. Aby ominąć błąd, użyj klucza ssh jako dodatkowej miary. Wyjaśniliśmy, jak możesz to zrobić tutaj:

1. Wygeneruj parę kluczy publiczny/prywatny na serwerze źródłowym za pomocą tego polecenia:

ssh-keygen -t

2. W przypadku algorytmów szyfrowania możesz użyć „rsa”, który jest najczęściej używanym algorytmem, lub dowolnego innego wybranego algorytmu.

3. Następnie zostaniesz poproszony o wybranie lokalizacji do przechowywania klucza ssh. Możesz przechowywać go w dowolnej wybranej lokalizacji lub w lokalizacji domyślnej.

4. Jako hasło możesz wprowadzić dowolne hasło lub pozostawić je puste, naciskając Enter.

5. Następnie skopiuj klucz publiczny na serwer docelowy za pomocą poniższego polecenia. Dzięki temu możesz nawet zalogować się do systemu docelowego bez hasła za pomocą ssh.

ssh-copy-id @

Uwaga: metoda logowania bez hasła będzie działać tylko dla użytkownika, dla którego wygenerowałeś klucz ssh.

6. Po utworzeniu i zapisaniu klucza ssh na zdalnym serwerze użyj tej składni polecenia scp do wymiany plików między dwoma zdalnymi systemami z systemem Linux:

scp @:<ścieżka_pliku_do_transferu> @:<ścieżka_do_sklepu_w_zdalnym_miejscu docelowym>

Powiedzmy, że musisz przesłać plik o nazwie test.txt z jednego zdalnego hosta do innego zdalnego odbiornika, użyj polecenia:

scp [email protected]:/home/test1/test.txt [email protected]:/home/remote2/Documents/test1.txt

W tym przykładzie:

  • remote1 to nazwa użytkownika w zdalnym hoście nadawcy
  • 10.10.11.113 to adres IP hosta zdalnego nadawcy
  • /home/test1/test.txt to ścieżka do pliku do wysłania
  • remote2 to nazwa użytkownika w docelowym zdalnym odbiorniku
  • 10.11.27.111 to adres IP docelowego zdalnego odbiorcy
  • /home/remote2/Documents/test1.txt to nazwa i ścieżka do zapisania pliku, który ma zostać odebrany.

Przesyłaj wiele plików za pomocą polecenia scp

Przesyłanie wielu plików jeden po drugim może być żmudnym zadaniem dla każdego. Zamiast tego możesz użyć poniższej składni do wymiany plików za pomocą polecenia scp w systemie Linux:

scp <ścieżka_do_pliku_1> <ścieżka_do_pliku_2> @:<ścieżka_do_sklepu_w_zdalnym_miejscu docelowym>

Na przykład – Załóżmy, że musisz wysłać cztery pliki, w tym test1.txt, test2.py, test3.sh i test4.c, do zdalnego odbiornika, możesz użyć poniższego polecenia:

scp -P 22 test1.txt test2.py test3.sh test4.c [email protected]:/home/remote_1/Dokumenty

Zobaczmy, jak działa polecenie w przykładzie i co robi:

  • -p 2222 służy do określania połączenia przez port 22
  • test1.txt test2.py test3.sh test4.c to nazwy plików do przesłania
  • remote_1 to nazwa użytkownika systemu odbierającego
  • 10.10.11.113 to adres IP odbiornika
  • /home/remote_1/Documents odnosi się do ścieżki przechowywania odebranego pliku.

Możesz nawet użyć symboli wieloznacznych, aby wysłać wiele plików z tym samym rozszerzeniem, jak pokazano poniżej:

scp . @:<ścieżka_do_sklepu_w_zdalnym_miejscu docelowym>

Na przykład, jeśli chcesz wysłać wszystkie pliki .py na zdalny serwer, użyj poniższego polecenia scp w terminalu Linux:

scp *.py [email protected]:/dom/zdalny_1/

Tutaj,

  • *.py oznacza wszystkie pliki Pythona
  • remote1 to nazwa użytkownika odbiornika
  • 10.10.11.113 to adres IP odbiornika
  • /home/remote_1/ to lokalizacja do przechowywania odebranego pliku

Często Zadawane Pytania

Czy przesyłanie plików SCP jest bezpieczne?

Secure Copy Protocol lub scp to protokół oparty na technologii SSH i wykorzystujący szyfrowanie i uwierzytelnianie do wymiany plików między dwoma hostami. Zapewnia to pełne bezpieczeństwo i integralność danych między dwoma hostami.

Czy SCP jest bezpieczniejszy niż SFTP?

Zarówno protokoły SCP, jak i SFTP są na równi pod względem bezpieczeństwa. Główną zaletą korzystania z scp przez SFTP są duże prędkości transferu, które są szczególnie przydatne w sieciach o dużych opóźnieniach.

Przesyłaj pliki bezpiecznie za pomocą polecenia scp w systemie Linux

W pewnym momencie każdy użytkownik musi wymieniać niektóre pliki przez sieć. Polecenie scp ułatwia bezpieczne i wydajne przesyłanie plików nawet w sieci o dużym opóźnieniu. Z pewnością znajomość różnych opcji i składni scp też może być przydatna. Możesz również zapoznać się z naszymi przewodnikami, jak zmienić nazwę pliku w systemie Linux i jak usunąć plik w systemie Linux, aby jeszcze bardziej poprawić swoje umiejętności zarządzania plikami w systemie operacyjnym. Mamy nadzieję, że ten artykuł pomógł ci dowiedzieć się, jak używać polecenia scp do przesyłania plików na komputerach z systemem Linux. Jeśli napotkasz jakiekolwiek problemy podczas korzystania z polecenia, daj nam znać w sekcji komentarzy.