Протокол SCP (Secure Copy) и его использование в Ubuntu


SCP (Secure Copy) — это протокол, основанный на SSH (Secure Shell), который позволяет безопасно копировать файлы между локальной и удаленной системами или между двумя удаленными системами. Он использует шифрование SSH для защиты данных во время передачи, что делает его более безопасным, чем FTP или rsync без SSH.

Основные характеристики SCP:

Использование SCP в Ubuntu:

Синтаксис команды scp выглядит следующим образом:

scp [опции] [источник] [назначение]

Где:

Примеры использования:

Копирование файла с локальной системы на удаленную:

scp /path/to/local/file.txt user@remote_host:/path/to/remote/directory/

Вам будет предложено ввести пароль пользователя на удаленной системе (если не используется аутентификация по SSH-ключам).

Копирование файла с удаленной системы на локальную:

scp user@remote_host:/path/to/remote/file.txt /path/to/local/directory/

Вам будет предложено ввести пароль пользователя на удаленной системе (если не используется аутентификация по SSH-ключам).

Копирование каталога с локальной системы на удаленную (рекурсивно):

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

-r: Опция, указывающая на рекурсивное копирование каталога (включая подкаталоги и из содержимое).

Копирование каталога с удаленной системы на локальную (рекурсивно):

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

Копирование файла между двумя удаленными системами:

scp user1@remote_host1:/path/to/file.txt user2@remote_host2:/path/to/directory/

Вам будет предложено ввести пароль пользователя на обеих удаленных системах (если не используется аутентификация по SSH-ключам). В этом случае, команда выполняется на локальной системе, но данные передаются между двумя удаленными системами через локальную систему.

Основные опции SCP:

-r: Рекурсивное копирование каталогов.
-P <port>: Указывает порт SSH, если он отличается от стандартного (22).
-p: Сохраняет время последнего изменения, время доступа и режимы исходного файла.
-q: Отключает индикатор прогресса и сообщения об ошибках.
-v: Включает подробный режим (verbose), который отображает отладочную информацию.
-C: Включает сжатие данных во время передачи.
-i <identity_file>: Указывает файл закрытого ключа для аутентификации по SSH-ключам.
-l <limit>: Ограничивает пропускную способность (в килобитах в секунду).

Примеры использования опций:

Копирование файла на удаленный сервер, используя нестандартный порт SSH:

scp -P 2222 /path/to/local/file.txt user@remote_host:/path/to/remote/directory/

Копирование файла с сохранением времени последнего изменения и режимов:

scp -p /path/to/local/file.txt user@remote_host:/path/to/remote/directory/

Копирование файла с использованием SSH-ключа:

scp -i /path/to/ssh/private_key /path/to/local/file.txt user@remote_host:/path/to/remote/directory/

Аутентификация по SSH-ключам (рекомендуется):

Использование SSH-ключей вместо паролей значительно повышает безопасность. Чтобы настроить аутентификацию по SSH-ключам:

Создайте пару ключей SSH на локальной системе (если их еще нет):

ssh-keygen -t rsa

Следуйте инструкциям на экране. Обычно достаточно просто нажать Enter для принятия значений по умолчанию.

Скопируйте открытый ключ на удаленную систему:

ssh-copy-id user@remote_host

Вам будет предложено ввести пароль пользователя на удаленной системе.

Альтернативный способ (если ssh-copy-id недоступен):

cat ~/.ssh/id_rsa.pub | ssh user@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Проверьте подключение без пароля:

ssh user@remote_host

Если все настроено правильно, вам не будет предложено ввести пароль.

Преимущества использования SCP:

Недостатки использования SCP:

Альтернативы SCP:

rsync: Более мощный инструмент для синхронизации файлов, который поддерживает возобновление передачи и другие полезные функции. Можно использовать с SSH для обеспечения безопасности.

SFTP (SSH File Transfer Protocol): Интерактивный протокол для передачи файлов, основанный на SSH.

Samba (SMB/CIFS): Протокол для обмена файлами между Windows и Linux системами.

В заключение:

SCP — это простой и безопасный способ копирования файлов между системами Linux. Он идеально подходит для небольших передач файлов, где безопасность является приоритетом. Для более сложных задач синхронизации рассмотрите возможность использования rsync или SFTP. Не забудьте настроить аутентификацию по SSH-ключам для повышения безопасности.