Linux администраторите трябва да са запознати със средата на командния ред. От GUI (Графичен потребителски интерфейс) режим в Linux сървъри не е обичайно да се инсталира.
SSH може да е най-популярният протокол, позволяващ на Linux администраторите да управляват сървърите по отдалечен защитен начин. Вграден с SSH команда има SCP команда, която се използва за копиране на файл(ове) между сървъри по защитен начин.
Основен синтаксис на SCP команда
Командата по-долу ще се чете като копие „име_на_изходен_файл“в”целева_папка“в”дестинация_хост” използвайки “потребителско име” сметка.
scp source_file_name [email protected]_host:destination_folder
Има много параметри в SCP команда, която можете да използвате. Ето параметрите, които могат да се използват при ежедневна употреба.
Съдържание
Сигурно прехвърляне на файлове в Linux
Основното SCP команда без параметри ще копира файловете във фонов режим. Потребителите няма да видят нищо, освен ако процесът не е завършен или се появи някаква грешка.
Можете да използвате „-v
” параметър за отпечатване на информация за отстраняване на грешки на екрана. Може да ви помогне да отстраните проблеми с връзката, удостоверяването и конфигурацията.
Копиране на файл от локален хост към отдалечен сървър
Следната команда копира файл “scp-cheatsheet.pdf” от локална към отдалечена Linux система под /начало/tecmint указател.
$ scp -v scp-cheatsheet.pdf [email protected]:/home/tecmint/.
Примерен изход:
Executing: program /usr/bin/ssh host 192.168.0.183, user tecmint, command scp -v -t /home/tecmint/. OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1f 31 Mar 2020 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files debug1: /etc/ssh/ssh_config line 21: Applying options for * debug1: Connecting to 192.168.0.183 [192.168.0.183] port 22. debug1: Connection established. debug1: identity file /home/tecmint/.ssh/id_rsa type -1 debug1: identity file /home/tecmint/.ssh/id_rsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_dsa type -1 debug1: identity file /home/tecmint/.ssh/id_dsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519 type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519_sk type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519_sk-cert type -1 debug1: identity file /home/tecmint/.ssh/id_xmss type -1 ...
Копирайте файл от отдалечен хост на локален хост
Следната команда копира файл “ssh-cheatsheet.pdf” от отдалечен хост към локална система под /начало/tecmint указател.
$ scp -v [email protected]:/home/ravi/ssh-cheatsheet.pdf /home/tecmint/.
Примерен изход:
Executing: program /usr/bin/ssh host 192.168.0.183, user tecmint, command scp -v -f /home/ravi/ssh-cheatsheet.pdf OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1f 31 Mar 2020 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files debug1: /etc/ssh/ssh_config line 21: Applying options for * debug1: Connecting to 192.168.0.183 [192.168.0.183] port 22. debug1: Connection established. debug1: identity file /home/tecmint/.ssh/id_rsa type -1 debug1: identity file /home/tecmint/.ssh/id_rsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_dsa type -1 debug1: identity file /home/tecmint/.ssh/id_dsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519 type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519_sk type -1 ...
Копирайте файл от отдалечен хост на друг хост
Следната команда копира файл “ssh-cheatsheet.pdf” от отдалечен хост към друга отдалечена хост система под /начало/tecmint указател.
$ scp -v [email protected]:/home/ravi/ssh-cheatsheet.pdf [email protected]:/home/anusha/.
Копирайте файлове с оригинална дата и час на създаване
„-p
” параметърът ще запази оригиналната модификация на файловете и времето за достъп, докато копирате файловете, заедно с очакваното време и скоростта на връзката ще се появят на екрана.
$ scp -p scp-cheatsheet.pdf [email protected]:/home/tecmint/.
Примерен изход:
[email protected]'s password: scp-cheatsheet.pdf 100% 531 721.4KB/s 00:00
Scp компресиране при копиране на файлове
Един от параметрите, които могат да ускорят прехвърлянето на вашите файлове, е „-C
”, който се използва за компресиране на вашите файлове в движение. Уникалното е, че компресията се случва само в мрежата. Когато файлът пристигне на целевия сървър, той ще се върне към оригиналния размер, както преди компресирането.
Разгледайте тези команди. Той използва един файл на 93 Mb.
$ scp -pv messages.log [email protected]:.
Примерен изход:
Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t. OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: Connecting to 202.x.x.x [202.x.x.x] port 22. debug1: Connection established. debug1: identity file /home/pungki/.ssh/id_rsa type -1 debug1: Found key in /home/pungki/.ssh/known_hosts:1 debug1: ssh_rsa_verify: signature correct debug1: Trying private key: /home/pungki/.ssh/id_rsa debug1: Next authentication method: password [email protected]'s password: debug1: Authentication succeeded (password). Authenticated to 202.x.x.x ([202.x.x.x]:22). debug1: Sending command: scp -v -p -t. File mtime 1323853868 atime 1380425711 Sending file timestamps: T1323853868 0 1380425711 0 messages.log 100% 93MB 58.6KB/s 27:05 Transferred: sent 97614832, received 25976 bytes, in 1661.3 seconds Bytes per second: sent 58758.4, received 15.6 debug1: Exit status 0
Копиране на файлове без „-C
” ще доведе до 1661.3 секунди. Можете да сравните резултата с командата по-долу, като използвате „-C"
параметър.
$ scp -Cpv messages.log [email protected]:.
Примерен изход:
Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t. OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: Connecting to 202.x.x.x [202.x.x.x] port 22. debug1: Connection established. debug1: identity file /home/pungki/.ssh/id_rsa type -1 debug1: Host '202.x.x.x' is known and matches the RSA host key. debug1: Found key in /home/pungki/.ssh/known_hosts:1 debug1: ssh_rsa_verify: signature correct debug1: Next authentication method: publickey debug1: Trying private key: /home/pungki/.ssh/id_rsa debug1: Next authentication method: password [email protected]'s password: debug1: Enabling compression at level 6. debug1: Authentication succeeded (password). Authenticated to 202.x.x.x ([202.x.x.x]:22). debug1: channel 0: new [client-session] debug1: Sending command: scp -v -p -t . File mtime 1323853868 atime 1380428748 Sending file timestamps: T1323853868 0 1380428748 0 Sink: T1323853868 0 1380428748 0 Sending file modes: C0600 97517300 messages.log messages.log 100% 93MB 602.7KB/s 02:38 Transferred: sent 8905840, received 15768 bytes, in 162.5 seconds Bytes per second: sent 54813.9, received 97.0 debug1: Exit status 0 debug1: compress outgoing: raw data 97571111, compressed 8806191, factor 0.09 debug1: compress incoming: raw data 7885, compressed 3821, factor 0.48
Както можете да видите, когато използвате компресия, процесът на прехвърляне се извършва в 162.5 секунди. то е 10 пъти по-бързо, отколкото ако не използвате „-C
” параметър. Ако копирате много файлове в мрежата, „-C
” ще ви помогне да намалите общото време, от което се нуждаете.
Нещото, което трябва да забележим е, че методът на компресиране няма да работи с никакви файлове. Когато изходният файл вече е компресиран, няма да намерите подобрение там. Файлове като .zip, .rar, снимкии .iso файловете няма да бъдат засегнати от „-C
” параметър.
Променете SCP Cipher на Encrypt Files
По подразбиране, SCP използва “AES-128” за шифроване на файлове. Ако искате да промените на друг шифър, за да го шифровате, можете да използвате „-c
” параметър.
Разгледайте тази команда.
$ scp -c 3des Label.pdf [email protected]:. [email protected]'s password: Label.pdf 100% 3672KB 282.5KB/s 00:13
Горната команда казва SCP да използвате 3des алгоритъм за шифроване на файла. Моля, внимавайте, че този параметър използва „-c
” не “-C
“.
Ограничаване на използването на честотната лента с SCP команда
Друг параметър, който може да бъде полезен, е „-l
” параметър. „-л” ще ограничи използваната честотна лента. Ще бъде полезно, ако направите скрипт за автоматизация, за да копирате много файлове, но не искате честотната лента да се източва от SCP процес.
$ scp -l 400 Label.pdf [email protected]:. [email protected]'s password: Label.pdf 100% 3672KB 50.3KB/s 01:13
The 400 стойност зад „-l
” означава, че ограничаваме честотната лента за SCP процес само до 50 KB/сек.
Едно нещо, което трябва да запомните е, че честотната лента е посочена в килобита/сек (kbps). Означава, че 8 бита са равни на 1 байт.
Докато SCP брои в Килобайта/сек (KB/s). Така че, ако искате да ограничите честотната си лента до SCP максимум само 50 KB/sтрябва да го настроите на 50 х 8 = 400.
SCP с различен порт
обикновено, SCP използва порт 22 като порт по подразбиране, но от съображения за сигурност можете да промените порта на друг порт. Например, ние използваме порт 2249.
Тогава командата трябва да е така.
$ scp -P 2249 Label.pdf [email protected]:. [email protected]'s password: Label.pdf 100% 3672KB 262.3KB/s 00:14
Уверете се, че използва главна буква “P
” не “p
” от “p
” вече се използва за запазени времена и режими.
SCP – Копиране на файлове и директории рекурсивно
Понякога трябва да копираме директорията и всичко останало файлове/директории вътре в него. Ще бъде по-добре, ако можем да го направим с една команда, използвайки „-r
” параметър, който копира рекурсивно цялата директория.
$ scp -r documents [email protected]:. [email protected]'s password: Label.pdf 100% 3672KB 282.5KB/s 00:13 scp.txt 100% 10KB 9.8KB/s 00:00
Когато процесът на копиране приключи, на целевия сървър ще намерите директория с име „документи” с всичките му файлове. Папката “документи” се създава автоматично.
SCP – Деактивиране на съобщенията за напредък
Ако изберете да не виждате индикатора за напредъка и предупредителните/диагностичните съобщения от SCP, можете да го деактивирате, като използвате „-q
” параметър. Ето един пример.
$ scp -q Label.pdf [email protected]:. [email protected]'s password: [email protected] ~/Documents $
Както можете да видите, след като въведете паролата, няма информация за SCP процеса. След като процесът приключи, ще видите отново подкана.
SCP – Копиране на файлове чрез прокси
Прокси сървърът обикновено се използва в офис среда. Родно, SCP не е конфигуриран прокси. Когато вашата среда използва прокси, трябва да „казвам” SCP за комуникация с проксито.
Ето сценария. Прокси адресът е 10.0.96.6 и прокси портът е 8080. Проксито също реализира удостоверяване на потребителя. Първо, трябва да създадете „~/.ssh/config” файл. Второ, поставяте тази команда вътре в него.
ProxyCommand /usr/bin/corkscrew 10.0.96.6 8080 %h %p ~/.ssh/proxyauth
След това трябва да създадете файла “~/.ssh/proxyauth” което съдържа.
myusername:mypassword
След това можете да направите SCP прозрачно, както обикновено.
Моля, обърнете внимание, че тирбушон може все още да не е инсталиран на вашата система. На моя Linux Mintпърво трябва да го инсталирам, като използвам стандартната процедура за инсталиране на Linux Mint.
$ apt-get install corkscrew
За други системи, базирани на yum, потребителите могат да инсталират тирбушон, като използват следната команда yum.
# yum install corkscrew
Друго нещо е, че тъй като „~/.ssh/proxyauth” файлът съдържа вашия “потребителско име” и “парола” във формат на ясен текст, моля, уверете се, че файлът е достъпен само за вас.
Изберете различен ssh_config файл
За мобилните потребители, които често превключват между фирмените мрежи и обществените мрежи, ще бъде трудно винаги да променят настройките в SCP. По-добре е, ако можем да поставим различен ssh_config файл, който да отговаря на нашите нужди.
Проксито се използва в мрежата на компанията, но не и в обществената мрежа и вие редовно превключвате мрежи.
$ scp -F /home/pungki/proxy_ssh_config Label.pdf [email protected]:. [email protected]'s password: Label.pdf 100% 3672KB 282.5KB/s 00:13
По подразбиране “ssh_config” файл на потребител ще бъде поставен в „~/.ssh/config“. Създаване на специфичен „ssh_config” файл с прокси съвместимост ще улесни превключването между мрежите.
Когато сте в мрежата на компанията, можете да използвате „-F
” параметър. Когато сте в обществена мрежа, можете да пропуснете „-F
” параметър.
Това е всичко SCP. Можеш да видиш man страници на SCP за повече подробности. Моля, не се колебайте да оставяте коментари и предложения.
Публикациите се превеждат автоматично с google translate