Kopiowanie plików przez SSH ⋆ ALexHost SRL

Sprawdź swoje umiejętności we wszystkich naszych usługach hostingowych i otrzymaj 15% zniżki!

Użyj kodu przy kasie:

Skills
18.12.2024

Kopiowanie plików przez SSH

SSH (Secure Shell) to szeroko stosowany protokół umożliwiający bezpieczny dostęp do zdalnych serwerów i zarządzanie nimi za pośrednictwem szyfrowanego połączenia. Jednym z najczęstszych zadań podczas pracy z SSH jest kopiowanie plików między komputerem lokalnym a serwerem zdalnym lub między dwoma serwerami zdalnymi.

W tym artykule zbadamy różne sposoby kopiowania plików przez SSH, w tym przy użyciu SCP (Secure Copy Protocol), rsync i innych metod.


Dlaczego warto używać SSH do przesyłania plików?

Używanie SSH do przesyłania plików ma kilka zalet:

  • Bezpieczeństwo: SSH szyfruje zarówno polecenia, jak i dane podczas transmisji, zapewniając ochronę poufnych informacji.
  • Wydajność: SSH jest szybki i niezawodny, umożliwiając przesyłanie plików bezpośrednio między systemami bez konieczności osobnego logowania.
  • Automatyzacja: SSH można zintegrować ze skryptami, umożliwiając zautomatyzowane przesyłanie plików między serwerami lub maszynami lokalnymi.

1. Kopiowanie plików za pomocą SCP (Secure Copy Protocol)

SCP jest jednym z najpopularniejszych narzędzi do bezpiecznego kopiowania plików przez SSH. Umożliwia przesyłanie plików z komputera lokalnego na serwer zdalny, z serwera zdalnego na komputer lokalny lub między dwoma serwerami zdalnymi.

Podstawowa składnia SCP:

scp [opcje] [źródło] [miejsce docelowe]

Przykład 1: Kopiowanie pliku z komputera lokalnego na serwer zdalny

scp /path/to/local/file username@remote_host:/path/to/remote/destination

W tym przykładzie:

  • /path/to/local/file to ścieżka do pliku na komputerze lokalnym.
  • username@remote_host to użytkownik SSH i nazwa hosta lub adres IP zdalnego serwera.
  • /path/to/remote/destination to ścieżka, w której plik będzie przechowywany na zdalnym serwerze.

Przykład 2: Kopiowanie pliku z serwera zdalnego na komputer lokalny

scp username@remote_host:/path/to/remote/file /path/to/local/destination

W tym przypadku plik jest przesyłany ze zdalnego serwera na lokalny komputer.

Przykład 3: Rekursywne kopiowanie katalogu

Aby skopiować cały katalog, należy użyć opcji -r (recursive):

scp -r /path/to/local/directory username@remote_host:/path/to/remote/destination

Spowoduje to przesłanie katalogu i całej jego zawartości na serwer zdalny.

Przydatne opcje SCP:

  • -P [port]: Określ port SSH, jeśli jest inny niż domyślny (22).
  • -C: Włącz kompresję podczas transferu w celu szybszego kopiowania plików.
  • -i [identity_file]: Użyj określonego klucza prywatnego SSH do uwierzytelniania.

2. Kopiowanie plików za pomocą rsync

rsync to kolejne potężne narzędzie do przesyłania plików przez SSH. Jest często preferowane w przypadku dużych lub powtarzających się transferów plików, ponieważ kopiuje tylko zmiany między źródłem a miejscem docelowym, oszczędzając czas i przepustowość.

Podstawowa składnia rsync:

rsync [opcje] [source] [miejsce docelowe]

Przykład 1: Kopiowanie pliku z komputera lokalnego na serwer zdalny

rsync -avz /path/to/local/file username@remote_host:/path/to/remote/destination

Przykład 2: Kopiowanie katalogu za pomocą rsync

rsync -avz /path/to/local/directory/ username@remote_host:/path/to/remote/destination/

Przydatne opcje rsync:

  • -a: Tryb archiwum, który zachowuje dowiązania symboliczne, uprawnienia, znaczniki czasu i własność plików.
  • -v: Tryb Verbose do wyświetlania postępu podczas transferu.
  • -z: Włącz kompresję, aby przyspieszyć transfer.
  • –delete: Usuwa pliki w miejscu docelowym, które nie istnieją już w źródle.
  • -e “ssh -p [port]”: Określa niestandardowy port SSH.

3. Kopiowanie plików między dwoma serwerami zdalnymi

Za pomocą SSH można również kopiować pliki bezpośrednio między dwoma zdalnymi serwerami. Obsługują to zarówno SCP, jak i rsync.

Przykład 1: Kopiowanie plików między dwoma zdalnymi serwerami za pomocą SCP

scp username1@remote_host1:/path/to/file username2@remote_host2:/path/to/destination

Przykład 2: Kopiowanie plików między dwoma zdalnymi serwerami za pomocą rsync

rsync -avz username1@remote_host1:/path/to/file username2@remote_host2:/path/to/destination

Jest to szczególnie przydatne do przesyłania plików między serwerami bez konieczności wcześniejszego pobierania ich na komputer lokalny.


4. Kopiowanie plików za pomocą protokołu SFTP (SSH File Transfer Protocol)

SFTP to kolejna metoda bezpiecznego przesyłania plików przez SSH. Jest podobna do FTP, ale wykorzystuje SSH do zapewnienia szyfrowania. SFTP jest zwykle używany w sesjach interaktywnych, ale może być również zautomatyzowany.

Korzystanie z SFTP:

Aby rozpocząć sesję SFTP, uruchom następujące polecenie:

sftp username@remote_host

Po wyświetleniu monitu SFTP można użyć poleceń takich jak:

  • put /path/to/local/file /path/to/remote/destination: Przesłanie pliku z komputera lokalnego na serwer zdalny.
  • get /path/to/remote/file /path/to/local/destination: Pobiera plik ze zdalnego serwera na lokalny komputer.
  • mput i mget: Przesyłanie lub pobieranie wielu plików jednocześnie.

Aby zakończyć sesję SFTP, wpisz exit lub quit.


5. Automatyzacja transferu plików za pomocą kluczy SSH

W przypadku powtarzających się transferów plików dobrym pomysłem jest skonfigurowanie uwierzytelniania opartego na kluczach SSH, aby nie trzeba było za każdym razem wprowadzać hasła.

Krok 1: Wygeneruj parę kluczy SSH (jeśli jej nie posiadasz)

Na komputerze lokalnym uruchom:

ssh-keygen -t rsa

Spowoduje to wygenerowanie pary kluczy publicznego i prywatnego.

Krok 2: Kopiowanie klucza publicznego na serwer zdalny

Użyj następującego polecenia, aby skopiować klucz publiczny na serwer zdalny:

ssh-copy-id username@remote_host

Teraz możesz logować się i przesyłać pliki bez konieczności podawania hasła, co ułatwia automatyzację.


Podsumowanie

Kopiowanie plików przez SSH to bezpieczny i wydajny sposób przesyłania danych między komputerem lokalnym a serwerem zdalnym lub między dwoma serwerami zdalnymi. Niezależnie od tego, czy używasz SCP, rsync czy SFTP, SSH oferuje szyfrowane transfery plików, które chronią dane przed przechwyceniem. Narzędzia takie jak SCP są proste do jednorazowych transferów, podczas gdy rsync jest idealny do bieżących zadań synchronizacji, szczególnie w przypadku dużych plików lub katalogów. Zrozumienie tych narzędzi pomoże ci efektywniej zarządzać transferami plików, zwłaszcza w środowisku zdalnego serwera.

Sprawdź swoje umiejętności we wszystkich naszych usługach hostingowych i otrzymaj 15% zniżki!

Użyj kodu przy kasie:

Skills