Протокол SCP тісно інтегрований з SSH, і їхні корені походять з однієї концепції.
SCP забезпечує конфіденційність та цілісність даних під час пересилання, функціонуючи як розширення протоколу SSH.
Для початку, розгляньмо механізм роботи SCP, а потім перейдемо до практичних команд.
Що таке SCP?
SCP розшифровується як протокол безпечного копіювання.
Це надійний та ефективний метод для переміщення файлів і каталогів між локальним та віддаленим комп’ютерами, або між двома віддаленими системами.
Він часто використовується для захищеного пересилання інформації через мережу. SCP використовує SSH (Secure Shell) для створення безпечного з’єднання та шифрування даних під час передачі.
SCP – це надійне рішення для віддаленої передачі файлів, незалежно від того, чи потрібно перемістити один файл, чи цілу папку.
Як функціонує SCP?
SCP базується на протоколі SSH, який є криптографічним мережевим протоколом для захищеного віддаленого доступу та виконання команд. Він застосовує аналогічні механізми безпеки, як SSH, включаючи шифрування та автентифікацію, для забезпечення захисту інформації під час передачі.
При використанні SCP користувач ініціює команду копіювання на своєму локальному комп’ютері, вказуючи вихідний файл і цільове розташування на віддаленому комп’ютері. SCP встановлює SSH-з’єднання з віддаленою системою, а потім безпечно переміщує файли з джерела до місця призначення.
Коли використовувати SCP?
SCP є особливо корисним у наступних ситуаціях.
Резервне копіювання віддаленого сервера
SCP дозволяє створювати резервні копії файлів з віддаленого сервера на локальний комп’ютер, або навпаки, що забезпечує збереження даних та можливість відновлення в разі потреби.
Розгортання програм
Він спрощує процес, безпечно переміщуючи необхідні файли на кожну цільову систему під час розгортання програм на багатьох серверах.
Передача великих файлів
SCP пропонує надійний та захищений спосіб передачі великих файлів, які можуть бути завеликими для надсилання електронною поштою.
Захищений обмін файлами
SCP гарантує, що дані залишаються зашифрованими під час пересилання конфіденційних файлів іншим користувачам.
Віддалена співпраця
SCP можна використовувати для безпечного обміну файлами з колегами або членами команди, які перебувають у різних місцях.
Синтаксис команд SCP
Перш ніж використовувати команду SCP, варто ознайомитися з її базовим синтаксисом.
Синтаксис команди SCP виглядає наступним чином:
scp [параметри] [джерело] [призначення]
Пояснення синтаксису:
Параметри
Це додаткові позначки, які змінюють поведінку команди SCP. Різні параметри дозволяють налаштовувати процес передачі. Ось кілька типових варіантів:
-r: рекурсивне копіювання папок та їхнього вмісту.
-p: збереження прав доступу, міток часу та режимів вихідного файлу.
-P: вказання номера порту для підключення SSH.
-i: визначення файлу закритого ключа для автентифікації SSH.
-C: використання стиснення для пришвидшення передачі даних.
-l: обмеження пропускної здатності, що використовується для передачі (у Кбіт/с).
-v: докладний режим – відображення повідомлень про налагодження під час передачі.
-o: передає параметр клієнту SSH. Можна використовувати для вимкнення суворої перевірки ключа хоста.
Джерело
Джерело вказує на файл або папку, які необхідно скопіювати. Це може бути локальний або віддалений шлях – залежно від ситуації.
Призначення
Призначення вказує, куди потрібно скопіювати джерело. Як і джерело, це також може бути локальний або віддалений шлях.
Приклади команд
#1. Копіювання файлу з локального комп’ютера на віддалений сервер
scp /шлях/до/локального/файлу.txt користувач@віддаленийхост:/шлях/до/призначення/
/шлях/до/локального/файлу.txt: це вихідний файл, який потрібно скопіювати з локального комп’ютера.
користувач@віддаленийхост: замініть “користувач” на ім’я віддаленого користувача, а “віддаленийхост” на ім’я хоста або IP-адресу віддаленого сервера.
/шлях/до/призначення/: це шлях до папки призначення на віддаленому сервері, куди буде скопійовано файл.
Приклад:
У моєму випадку я обрав один віддалений сервер для передачі файлу.
Ім’я користувача віддаленого хосту: abhishekvarma
Адреса віддаленого хосту: 192.168.29.70
scp /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Під час підключення до віддаленого комп’ютера буде запитано пароль. Тут я обрав zip-файл для копіювання.
Результат:
І результат виглядатиме так, якщо під час підключення до віддаленого сервера не виникне помилок.
sample.zip 100% 20KB 717.9KB/s 00:00
#2. Копіювання файлу з віддаленого комп’ютера на локальний
scp користувач@віддаленийхост:/шлях/до/віддаленого/файлу.txt /шлях/до/локального/призначення/
Як і вище, замініть адресу користувача та віддаленого хоста.
Приклад:
scp [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop
Результат:
Це лише приклад результату в моєму випадку. Мітка часу залежить від швидкості з’єднання.
sample.zip 100% 20KB 51.2KB/s 00:00
#3. Рекурсивне копіювання каталогу
scp користувач@віддаленийхост:/шлях/до/віддаленого/файлу.txt /шлях/до/локального/призначення/
Тут параметр ‘-r’ вказує SCP рекурсивно копіювати папки (включаючи підпапки та їхній вміст).
Приклад:
scp -r /home/vboxuser/Desktop [email protected]:/Users/abhishekvarma/Desktop
Тут я вказав всю папку для копіювання файлів.
Результат:
sample.zip 100% 20KB 1.0MB/s 00:00 Screenshot from 2023-08-13 21-45-23.png 100% 27KB 1.5MB/s 00:00 .swp 100% 12KB 894.2KB/s 00:00 .help.swp 100% 12KB 780.4KB/s 00:00
#4. Копіювання файлів, що відповідають шаблону
scp /шлях/до/локального/*.txt користувач@віддаленийхост:/шлях/до/призначення/
*.txt – це шаблон підстановки, який відповідає всім файлам із розширенням .txt у вказаній локальній папці. Шляхи джерела та призначення такі самі, як і раніше.
Приклад:
scp /home/vboxuser/Desktop/locfolder/*.png [email protected]:/Users/abhishekvarma/Desktop
Результат:
Тут я випробував з розширенням .png.
Screenshot from 2023-08-13 21-45-23.png 100% 27KB 1.4MB/s 00:00 Screenshot from 2023-08-13 21-55-28.png 100% 24KB 1.7MB/s 00:00 Screenshot from 2023-08-13 22-04-03.png 100% 38KB 2.1MB/s 00:00
#5. Збереження атрибутів файлів
scp -p /шлях/до/локального/файлу.txt користувач@віддаленийхост:/шлях/до/призначення/
Тут параметр ‘-p’ зберігає час модифікації, час доступу та режими вихідного файлу під час копіювання.
Приклад:
scp -p /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Результат:
sample.zip 100% 20KB 420.0KB/s 00:00
#6. Вказання іншого порту SSH
scp -P 22 /шлях/до/локального/файлу.txt користувач@віддаленийхост:/шлях/до/призначення/
Параметр “-P” визначає інший порт SSH (у цьому випадку 22) для підключення SCP. Можна використовувати будь-який порт.
Приклад:
scp -P 22 /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Результат:
sample.zip 100% 20KB 1.2MB/s 00:00
#7. Копіювання зі стисненням
scp -C /шлях/до/локального/файлу.txt користувач@віддаленийхост:/шлях/до/призначення/
Цей параметр ‘-C’ вмикає стиснення під час передачі, потенційно зменшуючи розмір переданих даних. Адреси джерела та призначення такі самі, як пояснювалося раніше.
Приклад:
scp -C /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Результат:
sample.zip 100% 20KB 985.8KB/s 00:00
#8. Детальний вивід для налагодження
scp -v /шлях/до/локального/файлу.txt користувач@віддаленийхост:/шлях/до/призначення/
Цей параметр ‘-v’ активує детальний вивід, який надає більше інформації під час процесу передачі.
Приклад:
scp -v /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Результат:
Приклад результату виглядатиме так.
Executing: program /usr/bin/ssh host 192.168.29.70, user abhishekvarma, command scp -v -t /Users/abhishekvarma/Desktop OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022 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.29.70 [192.168.29.70] port 22. debug1: Connection established. debug1: identity file /root/.ssh/id_rsa type -1 debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa_sk type -1 debug1: identity file /root/.ssh/id_ecdsa_sk-cert type -1
#9. Копіювання з віддаленого на локальний з детальним виводом
scp -v користувач@віддаленийхост:/шлях/до/віддаленого/файлу.txt /шлях/до/локального/призначення/
Ті самі пояснення, що й у попередньому прикладі з детальним виводом, зі зміненими ролями локального та віддаленого місця.
Приклад:
scp -v [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop
Результат:
Вихід виглядатиме так.
Executing: program /usr/bin/ssh host 192.168.29.70, user abhishekvarma, command scp -v -f /Users/abhishekvarma/Desktop/sample.zip OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022 debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 21: Applying options for * debug1: Connecting to 192.168.29.70 [192.168.29.70] port 22. debug1: Connection established. debug1: identity file /root/.ssh/id_rsa type -1 debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa_sk type -1 debug1: identity file /root/.ssh/id_ecdsa_sk-cert type -1
#10. Копіювання з використанням іншого ключа SSH
scp -i /шлях/до/закрытого_ключа.pem /шлях/до/локального/файлу.txt користувач@віддаленийхост:/шлях/до/призначення/
Цей параметр “-i /шлях/до/закрытого_ключа.pem” вказує інший закритий ключ SSH для автентифікації.
Приклад:
scp -i /шлях/до/закрытого_ключа.pem /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Результат:
Якщо у вас є приватний ключ, можна використовувати його або залишити стандартний.
sample.zip 100% 20KB 1.1MB/s 00:00
#11. Копіювання декількох файлів на віддалений сервер
scp файл1.txt файл2.txt користувач@віддаленийхост:/шлях/до/призначення/
Ця команда копіює файли file1.txt та file2.txt з локальної папки до вказаного місця призначення на віддаленому сервері.
Приклад:
scp /home/vboxuser/Desktop/image.png /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Результат:
image.png 100% 39KB 1.4MB/s 00:00 sample.zip 100% 20KB 1.5MB/s 00:00
#12. Копіювання віддаленого файлу з іншою назвою
scp користувач@віддаленийхост:/шлях/до/віддаленого/файлу.txt /шлях/до/локального/нованазвафайлу.txt
Ця команда копіює file.txt з віддаленого сервера до локальної папки, перейменовуючи його на newfilename.txt у процесі.
Приклад:
scp [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop/newfile.zip
Результат:
При виконанні цієї команди старе і нове розширення файлу повинні бути однаковими.
sample.zip 100% 20KB 28.7KB/s 00:00
#13. Копіювання з певним обмеженням пропускної здатності
scp -l 1000 /шлях/до/локального/файлу.txt користувач@віддаленийхост:/шлях/до/призначення/
Цей параметр “-l” визначає обмеження пропускної здатності в Кбіт/с (у цьому випадку 1000 Кбіт/с) для передачі.
Приклад:
scp -l 300 /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Результат:
sample.zip 100% 20KB 31.3KB/s 00:00
#14. Копіювання файлів та збереження символічних посилань
scp -rp /шлях/до/локального/джерела/ користувач@віддаленийхост:/шлях