SCP (Secure Copy) — это протокол, основанный на SSH (Secure Shell), который позволяет безопасно копировать файлы между локальной и удаленной системами или между двумя удаленными системами. Он использует шифрование SSH для защиты данных во время передачи, что делает его более безопасным, чем FTP или rsync без SSH.
Основные характеристики SCP:
- Безопасность: Использует шифрование SSH для защиты данных.
- Простота: Легко использовать и понимать.
- Аутентификация: Использует те же механизмы аутентификации, что и SSH (пароль или SSH-ключи).
- Доступность: SCP клиент обычно предустановлен в большинстве дистрибутивов Linux, включая Ubuntu.
Использование SCP в Ubuntu:
Синтаксис команды scp выглядит следующим образом:
scp [опции] [источник] [назначение]
Где:
- опции: Различные параметры, которые изменяют поведение команды scp.
- источник: Файл или каталог, который нужно скопировать. Может быть локальным или удаленным.
- назначение: Место, куда нужно скопировать файл или каталог. Может быть локальным или удаленным.
Примеры использования:
Копирование файла с локальной системы на удаленную:
scp /path/to/local/file.txt user@remote_host:/path/to/remote/directory/
- /path/to/local/file.txt: Путь к локальному файлу, который нужно скопировать.
- user@remote_host: Имя пользователя и IP-адрес или доменное имя удаленной системы.
- /path/to/remote/directory/: Путь к удаленному каталогу, куда нужно скопировать файл.
Вам будет предложено ввести пароль пользователя на удаленной системе (если не используется аутентификация по SSH-ключам).
Копирование файла с удаленной системы на локальную:
scp user@remote_host:/path/to/remote/file.txt /path/to/local/directory/
- 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:
- Безопасность: Шифрование SSH обеспечивает конфиденциальность и целостность данных.
- Простота: Легко использовать и понимать.
- Широкая доступность: SCP клиент обычно предустановлен в большинстве дистрибутивов Linux.
Недостатки использования SCP:
- Нет возможности возобновления передачи: Если передача файла прервется, ее придется начинать заново.
- Менее эффективен для синхронизации: Для синхронизации файлов лучше использовать rsync.
Альтернативы SCP:
rsync: Более мощный инструмент для синхронизации файлов, который поддерживает возобновление передачи и другие полезные функции. Можно использовать с SSH для обеспечения безопасности.
SFTP (SSH File Transfer Protocol): Интерактивный протокол для передачи файлов, основанный на SSH.
Samba (SMB/CIFS): Протокол для обмена файлами между Windows и Linux системами.
В заключение:
SCP — это простой и безопасный способ копирования файлов между системами Linux. Он идеально подходит для небольших передач файлов, где безопасность является приоритетом. Для более сложных задач синхронизации рассмотрите возможность использования rsync или SFTP. Не забудьте настроить аутентификацию по SSH-ключам для повышения безопасности.