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:
Przykład 1: Kopiowanie pliku z komputera lokalnego na serwer zdalny
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
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):
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:
Przykład 1: Kopiowanie pliku z komputera lokalnego na serwer zdalny
Przykład 2: Kopiowanie katalogu za pomocą rsync
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
Przykład 2: Kopiowanie plików między dwoma zdalnymi serwerami za pomocą rsync
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:
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:
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:
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.