Копирование файлов через SSH ⋆ ALexHost SRL

Проверьте свои навыки на всех наших услугах хостинга и получите скидку 15%!.

Используйте код при регистрации:

Skills
18.12.2024

Копирование файлов через SSH

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

В этой статье мы рассмотрим различные способы копирования файлов через SSH, включая использование SCP (Secure Copy Protocol), rsync и других методов.


Зачем использовать SSH для передачи файлов?

Использование SSH для передачи файлов имеет ряд преимуществ:

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

1. Копирование файлов с помощью протокола SCP (протокол безопасного копирования)

SCP – один из самых популярных инструментов для безопасного копирования файлов через SSH. Он позволяет передавать файлы с локальной машины на удаленный сервер, с удаленного сервера на вашу локальную машину или между двумя удаленными серверами.

Основной синтаксис SCP:

scp [options] [источник] [пункт назначения]

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

scp /path/to/local/file username@remote_host:/path/to/remote/destination

В этом примере:

  • /path/to/local/file – это путь к файлу на вашей локальной машине.
  • username@remote_host – это пользователь SSH и имя хоста или IP-адрес удаленного сервера.
  • /path/to/remote/destination – путь к файлу, который будет сохранен на удаленном сервере.

Пример 2: Копирование файла с удаленного сервера на локальную машину

scp username@remote_host:/path/to/remote/file /path/to/local/destination

В этом случае файл передается с удаленного сервера на локальную машину.

Пример 3: Рекурсивное копирование каталога

Чтобы скопировать весь каталог, используйте параметр -r (рекурсивный):

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

Это приведет к передаче каталога и всего его содержимого на удаленный сервер.

Полезные опции SCP:

  • -P [порт]: Укажите порт SSH, если он отличается от установленного по умолчанию (22).
  • -C: Включить сжатие при передаче для ускорения копирования файлов.
  • -i [identity_file]: Использовать определенный закрытый ключ SSH для аутентификации.

2. Копирование файлов с помощью rsync

rsync – еще один мощный инструмент для передачи файлов по SSH. Его часто предпочитают использовать для передачи больших или повторяющихся файлов, поскольку он копирует только изменения между источником и получателем, экономя время и пропускную способность.

Основной синтаксис rsync:

rsync [options] [источник] [пункт назначения]

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

rsync -avz /path/to/local/file username@remote_host:/path/to/remote/destination

Пример 2: Копирование каталога с помощью rsync

rsync -avz /path/to/local/directory/ username@remote_host:/path/to/remote/destination/

Полезные опции rsync:

  • -a: Режим архивации, при котором сохраняются символические ссылки, разрешения, временные метки и права собственности на файлы.
  • -v: Режим Verbose для отображения прогресса во время передачи.
  • -z: Включить сжатие для ускорения передачи.
  • –delete: Удаление файлов в пункте назначения, которые больше не существуют в источнике.
  • -e “ssh -p [порт]”: Укажите пользовательский порт SSH.

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

Используя SSH, вы также можете напрямую копировать файлы между двумя удаленными серверами. Это поддерживают и SCP, и rsync.

Пример 1: Копирование файлов между двумя удаленными серверами с помощью SCP

scp username1@remote_host1:/path/to/file username2@remote_host2:/path/to/destination

Пример 2: Копирование файлов между двумя удаленными серверами с помощью rsync

rsync -avz username1@remote_host1:/path/to/file username2@remote_host2:/path/to/destination

Это особенно полезно для передачи файлов между серверами без необходимости сначала загружать их на локальную машину.


4. Копирование файлов с помощью протокола SFTP (SSH File Transfer Protocol)

SFTP – это еще один метод безопасной передачи файлов по SSH. Он похож на FTP, но использует SSH для обеспечения шифрования. SFTP обычно используется в интерактивных сеансах, но может быть и автоматизирован.

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

Чтобы начать сеанс SFTP, выполните следующую команду:

sftp username@remote_host

Войдя в приглашение SFTP, вы можете использовать такие команды, как:

  • put /path/to/local/file /path/to/remote/destination: Загружает файл с локальной машины на удаленный сервер.
  • get /path/to/remote/file /path/to/local/destination: Загрузка файла с удаленного сервера на вашу локальную машину.
  • mput и mget: Загрузка или скачивание нескольких файлов одновременно.

Чтобы выйти из SFTP-сессии, введите exit или quit.


5. Автоматизация передачи файлов с помощью ключей SSH

Для многократной передачи файлов целесообразно настроить аутентификацию на основе ключей SSH, чтобы не вводить каждый раз пароль.

Шаг 1: Сгенерируйте пару ключей SSH (если у вас их нет)

На локальной машине выполните команду:

ssh-keygen -t rsa

В результате будет сгенерирована пара открытого и закрытого ключей.

Шаг 2: Скопируйте открытый ключ на удаленный сервер

Используйте следующую команду, чтобы скопировать открытый ключ на удаленный сервер:

ssh-copy-id username@remote_host

Теперь вы можете входить в систему и передавать файлы без необходимости вводить пароль, что упрощает автоматизацию.


Заключение

Копирование файлов через SSH – это безопасный и эффективный способ передачи данных между локальной машиной и удаленным сервером или между двумя удаленными серверами. Независимо от того, используете ли вы SCP, rsync или SFTP, SSH обеспечивает зашифрованную передачу файлов, которая защищает ваши данные от перехвата. Такие инструменты, как SCP, просты для одноразовой передачи, в то время как rsync идеально подходит для постоянных задач синхронизации, особенно для больших файлов или каталогов. Понимание этих инструментов поможет вам более эффективно управлять передачей файлов, особенно в среде удаленных серверов.

Проверьте свои навыки на всех наших услугах хостинга и получите скидку 15%!.

Используйте код при регистрации:

Skills