polecenie scp – Secure copy

Scp (Secure Copy) jest narzędziem wiersza poleceń do kopiowania lub przesyłania plików między hostami. Używa tego samego rodzaju mechanizmów bezpieczeństwa jak program ssh.

Infaktycznie używa połączenia ssh w tle do wykonania transferu plików. scp odnosi się zarówno do „protokołu”, który definiuje jak powinno działać bezpieczne kopiowanie jak i do „programu” (polecenia), który jest instalowany jako część pakietu narzędzi OpenSSH.

W tym krótkim poradniku przyjrzymy się kilku przykładom polecenia scp i temu jak może być ono użyte do bezpiecznego transferu plików.

Jak zainstalować scp

Scp jest generalnie instalowany domyślnie na większości dystrybucji linuxa jako część pakietów opensshH. Na ubuntu/debian na przykład, pakiet openssh-client dostarcza program scp.

$ dpkg -L openssh-client | grep scp/usr/bin/scp/usr/share/man/man1/scp.1.gz

To pakiet OpenSSH, który dostarcza programy ssh, scp, sftp wraz z wieloma innymi narzędziami. Tak więc nie musimy tutaj robić nic dodatkowego, poza używaniem i nauką programu.

Używanie scp – podstawowa składnia

Podstawowa składnia scp jest bardzo prosta do zapamiętania. Wygląda ona następująco

$ scp source_file_path destination_file_path

W zależności od hosta, ścieżka do pliku powinna zawierać pełny adres hosta, numer portu, nazwę użytkownika i hasło wraz ze ścieżką do katalogu.

Więc jeśli „wysyłasz” plik z twojego lokalnego komputera do zdalnego (uploading), składnia wyglądałaby tak

$ scp ~/my_local_file.txt _host.com:/some/remote/directory

Kiedy kopiujesz plik ze zdalnego hosta do lokalnego (downloading), jego wygląd jest odwrotny

$ scp _host.com:/some/remote/directory ~/my_local_file.txt# just download the file$ scp :/some/path/file.txt .

To tyle jeśli chodzi o używanie scp do zwykłych zadań. Oprócz tego, istnieje kilka dodatkowych opcji i funkcji, które scp obsługuje. Zróbmy szybki przegląd tych opcji.

I tak, domyślnie scp zawsze nadpisuje pliki w miejscu docelowym. Jeśli chcesz tego uniknąć, użyj potężniejszego narzędzia o nazwie rsync.

przykłady poleceń scp

1. Verbose output

Dzięki verbose output, program scp wypisywałby wiele informacji o tym, co robi w tle. Jest to często przydatne, gdy program zawodzi lub nie jest w stanie ukończyć żądania. Wyjście verbose wskazywałoby wtedy dokładny punkt, w którym program napotkał problemy.

$ scp -v ~/test.txt :/root/help2356.txtExecuting: program /usr/bin/ssh host 192.168.1.3, user root, command scp -v -t /root/help2356.txtOpenSSH_6.2p2 Ubuntu-6ubuntu0.1, OpenSSL 1.0.1e 11 Feb 2013debug1: Reading configuration data /home/enlightened/.ssh/configdebug1: Reading configuration data /etc/ssh/ssh_configdebug1: /etc/ssh/ssh_config line 19: Applying options for *debug1: Connecting to 192.168.1.3 port 22.debug1: Connection established...... OUTPUT TRUNCATED

Wyjście byłoby duże i zawierałoby szczegółowe informacje o tym, jak nawiązano połączenie, jakie pliki konfiguracyjne i tożsamości są używane i tak dalej.

2. przenieść wiele plików

Wiele plików można określić oddzielone spacją, jak to

$ scp foo.txt bar.txt :/path/directory/

Aby skopiować wiele plików ze zdalnego hosta do bieżącego katalogu lokalnego

$ scp :/path/directory/\{foo.txt,bar.txt\} .$ scp :~/\{abc.log,cde.txt\} .

3. Kopiuj cały katalog (rekurencyjnie)

Aby skopiować cały katalog z jednego hosta do drugiego użyj przełącznika r i określ katalog

$ scp -v -r ~/Downloads :/root/Downloads

4. Kopiuj pliki przez 2 zdalne hosty

Scp może kopiować pliki z 1 zdalnego hosta do innego zdalnego hosta, jak również.

$ scp :/some/remote/dir/foobar.txt :/some/remote/dir/

5. Przyspiesz transfer za pomocą kompresji

Super fajna opcja przyspieszenia transferu, aby zaoszczędzić czas i przepustowość. Wszystko, co musisz zrobić, to użyć opcji C, aby włączyć kompresję. Pliki są kompresowane w locie i dekompresowane w miejscu przeznaczenia.

$ scp -vrC ~/Downloads :/root/Downloads

W powyższym przykładzie przenieśliśmy cały katalog z włączoną kompresją. Przyrost prędkości zależy od tego, jak bardzo pliki mogą być skompresowane.

6. Ogranicz wykorzystanie pasma

Jeśli nie chcesz, aby scp zajmował całe dostępne pasmo, użyj opcji l, aby ograniczyć maksymalną prędkość w Kbit/s.

$ scp -vrC -l 400 ~/Downloads :/root/Downloads

7. Połącz się z innym numerem portu na zdalnym hoście

Jeśli zdalny serwer ma demona ssh działającego na innym porcie (domyślnie 22), musisz powiedzieć scp, aby używał tego konkretnego numeru portu używając opcji ’-P’.

$ scp -vC -P 2200 ~/test.txt :/some/path/test.txt

8. Zachowaj atrybuty pliku

Opcja ’-p’ (małe litery), zachowa czasy modyfikacji, czasy dostępu i tryby z oryginalnego pliku.

$ scp -C -p ~/test.txt :/some/path/test.txt

9. Tryb cichy

W trybie cichym (opcja ’-q’), wyjście scp zostanie stłumione, i wyłączy licznik postępu, jak również komunikaty ostrzegawcze i diagnostyczne.

$ scp -vCq ~/test.txt :/some/path/test.txt

10. Określ plik tożsamości

Gdy używasz uwierzytelniania opartego na kluczu (bez hasła), musisz określić plik tożsamości, który zawiera klucz prywatny. Ta opcja jest przekazywana bezpośrednio do polecenia ssh i działa w ten sam sposób.

$ scp -vCq -i private_key.pem ~/test.txt :/some/path/test.txt

11. Użyj innego pliku ssh_config

Użyj opcji ’-F’, aby określić inny plik ssh_config.

$ scp -vC -F /home/user/my_ssh_config ~/test.txt :/some/path/test.txt

12. Użyj innego szyfru

Scp domyślnie używa szyfru/szyfrowania AES. Czasami możesz chcieć użyć innego szyfru. Użycie innego szyfru może przyspieszyć proces transferu. Na przykład blowfish i arcfour są znane jako szybsze niż AES (ale mniej bezpieczne).

$ scp -c blowfish -C ~/local_file.txt :/remote/path/file.txt

W powyższym przykładzie używamy szyfru blowfish wraz z kompresją. Może to dać znaczący wzrost prędkości w zależności od dostępnej przepustowości.

Podsumowanie

Mimo, że scp jest bardzo wydajny w bezpiecznym przesyłaniu plików, brakuje mu niezbędnych cech narzędzia do synchronizacji plików. Wszystko co może zrobić to skopiować wkleić wszystkie wspomniane pliki z jednej lokalizacji do innej.

Potężniejszym narzędziem jest Rsync, który nie tylko posiada wszystkie funkcje scp, ale dodaje więcej funkcji do inteligentnej synchronizacji plików pomiędzy 2 hostami. Na przykład, może sprawdzać i przesyłać tylko zmodyfikowane pliki, ignorować istniejące pliki i tak dalej.

.