Как передавать и копировать файлы по SSH в Linux и Windows
Передача файлов между локальным компьютером и удаленным сервером — базовая задача системного администратора. В основном это делается через протокол SSH, так как он шифрует информацию, гарантирует ее доставку и подходит как для Linux, так и для Windows. В статье разберем инструменты для передачи файлов по SSH и примеры использования протокола.

- Принцип работы SSH
- SCP (Secure Copy Protocol): копирование через командную строку
- SFTP (SSH File Transfer Protocol) для интерактивной работы с файлами
- Rsync для синхронизации и инкрементного копирования
- Работа в Linux: терминал, файловые менеджеры и графические клиенты
- Работа в Windows: от PowerShell до графических клиентов
- Продвинутые сценарии и автоматизация
- Безопасность, производительность и решение проблем
- Выводы
Принцип работы SSH
SSH (Secure Shell) переводится с английского как «безопасная оболочка». Название отражает суть протокола — он обеспечивает защищенную передачу данных между клиентом и сервером по зашифрованному каналу.
Для работы протокола нужны две стороны — SSH-клиент и SSH-сервер. По умолчанию соединение устанавливается через порт 22. После успешной аутентификации сервер предоставляет пользователю доступ, а все передаваемые команды и данные шифруются для защиты от перехвата.
Работа SSH
SSH использует ключи шифрования — публичный и приватный. Первый хранится на сервере, а второй есть только у клиента и никому не передается. Сервер проверяет соответствие ключей и разрешает доступ только при успешном результате.
Открытую часть ключей можно загружать для хранения в облачный каталог с помощью сервиса Evolution SSH Keys от Cloud.ru.
Настройка SSH-доступа к удаленному серверу
Создайте пару ключей с помощью ssh-keygen. Публичный отправьте в файл authorized_keys на сервере. Теперь можно проходить аутентификацию без пароля.
Проверьте соединение:
Если все получилось, можете отправлять файлы.
SCP (Secure Copy Protocol): копирование через командную строку
SCP — инструмент для копирования файлов в рамках SSH-соединения. Он работает из командной строки и позволяет переносить данные между компьютером и сервером либо между серверами. Файлы будут зашифрованы, поэтому без опасений используйте SCP даже в открытых сетях.
С OpenSSH 9.0 (апрель 2022) команда scp использует SFTP протокол по умолчанию вместо legacy SCP/RCP. Для использования старого SCP протокола используйте флаг -O: scp -O file.txt user@host:/dest/.
Синтаксис команды scp
Синтаксис команды простой. Это выглядит так:
Источник — локальный файл либо файл на удаленном сервере. На использование SSH указывает формат user@host. В остальном SCP работает также, как обычное копирование файлов.
Примеры копирования
Загрузка файла на сервер (upload)
Чтобы передать файл с компьютера на сервер, укажите путь к файлу и каталог назначения:
Команда поможет сделать копию файла file.txt в нужный каталог на сервере.
Скачивание файла с сервера (download)
Если хотите скопировать файлы с сервера на компьютер, укажите источник и папку, затем выполните команду:
После выполнения команды файл окажется в директории.
Копирование между серверами
Можно передавать файлы между удаленными серверами без сохранения на компьютерах. Поможет команда:
Способ выручит, если хотите перенести файлы между разными средами.
Ключевые опции и флаги команды scp
С командой scp применяются флаги для копирования в разных ситуациях. Они упрощают работу с папками, позволяют применять нестандартные настройки и быстрее передавать данные:
Флаг | Назначение | Примеры использования |
-r | Рекурсивное копирование директорий | Передача папки со всеми файлами и подкаталогами |
-P | Порта SSH | Использование нестандартного порта вместо 22 |
-i | Использование приватного ключа | Для подключения нужен конкретный SSH-ключ |
-C | Сжатие данных | Для включения сжатия. Эффективно только при медленных соединениях (<10 Mbps). В современных высокоскоростных сетях обычно замедляет передачу из-за CPU overhead. |
Обратите внимание, что флаг -P (заглавная буква) используется в SCP для указания порта, в то время как SSH использует -p (строчная). Это связано с тем, что в SCP -p зарезервирован для сохранения атрибутов файла (времени модификации и прав доступа.
SFTP (SSH File Transfer Protocol) для интерактивной работы с файлами
SFTP — протокол, который работает поверх SSH в интерактивном режиме. Если SCP выполняет одну команду, то SFTP открывает сессию. Вы можете перемещаться по каталогам, просматривать файлы и управлять ими.
Отличие SFTP от SCP
SCP удобнее использовать для быстрого копирования, когда вы знаете, что и куда передавать. SFTP нужен для «ручной» работы. Например, если хотите удалить или переименовать файлы, проверить права доступа.
Команды в SFTP-сессии
Для подключения к серверу нужна команда sftp user@remote-host. Дальше можно применять «узкие» команды, например:
ls — просмотр содержимого каталогов;
cd — переход между папками;
lpwd — отображение текущего локального каталога;
lcd — изменение рабочего каталога;
put — загрузка файлов на сервер;
get — скачивание файлов;
rm, mkdir и chmod — управление файлами и папками.
Автоматизация пакетной передачи файлов через SFTP
SFTP помогает автоматизировать передачу данных. Создайте файл sftp -b commands.sftp user@host с набором релевантных команд и запустите сессию с параметром -b. Подход подойдет, если загрузки происходят регулярно, и вы хотите обойтись без ручных операций.
Rsync для синхронизации и инкрементного копирования
Rsync — инструмент, с помощью которого выполняется синхронизация файлов по SSH. В отличие от SCP, он использует delta-transfer алгоритм для определения и передачи только измененных блоков файлов, а не целых файлов. Это значительно экономит трафик для последующих синхронизаций.
Команда:
Флаг -a отвечает за передачу данных в первозданном виде, -v — за путь, а -z — за сжатие.
Rsync помогает зеркалировать каталоги:
--delete убирает из «зеркала» файлы, которых нет в источнике;
--exclude отбрасывает ненужное, например, логи.
Работа в Linux: терминал, файловые менеджеры и графические клиенты
В Linux файлы по SSH можно передавать через терминал с помощью утилит scp, sftp и rsync, которые есть в популярных дистрибутивах. Утилиты позволяют вручную выполнять разовые операции и автоматизировать постоянные действия.
Можно работать с помощью файловых менеджеров, которые поддерживают SSH. В Nautilus и Dolphin удобно подключаться к серверу через ssh://user@hostname. В Midnight Commander реализован встроенный режим SFTP для управления файлами из специального интерфейса. При этом этот режим имеет ограничение — он не поддерживает публичные ключи из ~/.ssh/config. Для безопасной работы с публичными ключами используйте Shell link вместо SFTP link.
Если хотите работать через графический интерфейс, ваш выбор — SFTP-клиенты. FileZilla и gFTP позволят подключаться к серверам, передавать данные и управлять удаленными каталогами.
Работа в Windows: от PowerShell до графических клиентов
В свежих версиях Windows есть встроенный OpenSSH-клиент. Его можно включить через «Дополнительные компоненты» в меню «Пуск» . После подключения вы сможете выполнять команды scp и sftp в PowerShell или командной строке.
Можно использовать набор утилит PuTTY. Вместе с ним применяются pscp и psftp, которые выполняют те же задачи, что и scp и sftp в Linux.
Работать через графический интерфейс можно с помощью бесплатного клиента WinSCP. Также популярны FileZilla и Cyberduck. Выбирайте их, если хотите максимальной наглядности.
Продвинутые сценарии и автоматизация
SSH позволяет автоматизировать регулярные задачи. Это важно для бэкапов, синхронизации данных и работы с незащищенными сервисами.
Использование SSH-агента для простой аутентификации
SSH-агент позволяет использовать пароль от ключа шифрования только один раз, а потом подключаться к серверам без пароля. В Linux для этого применяется ssh-agent, в Windows — Pageant, если работаете с PuTTY. Это выручает при частых подключениях.
Создание bash-скриптов для автоматической передачи файлов
Передачу файлов можно автоматизировать с помощью bash-скриптов. Например, rsync подойдет для регулярного резервного копирования. Чтобы данные копировались без вашего участия, запускайте скрипт по расписанию.
Туннелирование FTP и других протоколов через SSH
SSH позволяет создавать защищенные туннели для протоколов, которые не предназначены для безопасной передачи данных. Например, FTP. Файлы будут передаваться через зашифрованный канал, даже если используемый протокол не поддерживает шифрование.
Безопасность, производительность и решение проблем
Передача файлов по SSH по умолчанию безопасна, но при ошибках в настройках возможны утечки данных. Делимся практиками, которые помогут снизить риски.
Аутентификация без пароля и отключение root
Для работы по SSH проходите аутентификацию с помощью ключей, а не паролей. Во-первых, их сложнее подобрать. Во-вторых, они удобнее в автоматизированных процессах.
Также отключите прямой вход в аккаунт пользователя root и выполняйте работу администратора через sudo. Так можно снизить риски несанкционированного доступа и защитить сервер от типовых атак.
Оптимизация скорости
Передачу файлов можно ускорить с помощью тонких настроек и специальных утилит копирования. При медленном соединении включите сжатие файлов.
Если работаете с rsync, примените дополнительные операции:
--progress — отображает ход процесса и помогает установить причину задержек;
--partial — сохраняет загруженные файлы при обрыве соединения;
--bwlimit — ограничивает скорость передачи.
Типичные ошибки и их исправление
Иногда при передаче данных случаются ошибки. Типичные проблемы и варианты решения:
Ошибка | Что значит | Как исправить |
Permission denied | Нет прав на подключение или доступ к файлу | Проверьте имя пользователя и права на файлы и каталоги |
Connection refused | Отклоненное соединение | Убедитесь, что SSH-служба запущена и открыт нужный порт |
No such file or directory | Неверный путь к файлу или папке | Проверьте настройки, имя файла и регистр символов |
Operation timed out | Сервер не отвечает | Проверьте сеть, настройки брандмауэра и доступность сервера |
Permission denied | Не подходит SSH-ключ | Укажите другой ключ с помощью флага -i |
Выводы
Протокола SSH — стандарт передачи файлов благодаря шифрованию данных. Можно применять SCP, SFTP и Rsync, которые решают разные задачи — от копирования до синхронизации. Упростите процессы за счет автоматизации и ключей для беспарольной аутентификации.

