Передача файлов между серверами — ежедневная задача админа и DevOps. scp (Secure Copy) ходит поверх SSH: шифрование, привычная аутентификация, без отдельного демона. Ниже — синтаксис, рабочие сценарии и нюансы, на которых часто спотыкаются.
Что такое SCP
SCP копирует файлы и каталоги между локальной машиной и удалённым хостом (или между двумя удалёнными). Канал — SSH, поэтому «человек посередине» и открытый FTP здесь не в приоритете. Оригинал на источнике не меняется, если вы сами его не трогаете.
Внутри протокола классически выделяют source mode (отдать файл) и sink mode (принять и записать). На практике вам достаточно помнить: слева источник, справа назначение, как у cp.
Между двумя remote-хостами scp умеет работать, но современные OpenSSH по умолчанию не всегда делают «прямой» hop: для предсказуемости и безопасности часто гонят трафик через локальную машину (флаг -3).
Синтаксис и основные опции
scp [опции] источник назначение
-r— рекурсивно (каталоги)-P— порт SSH (именно большаяP, не как уssh -p)-i— путь к приватному ключу-C— сжатие на лету (помогает на текстовых данных и медленных линках)-p— сохранить mtime/atime-q— тихий режим-v— отладка (если «висит» или падает auth)-3— между двумя remote гонять через localhost
Базовый шаблон «залить файл на сервер»:
scp file.txt user@remote_host:/path/to/dir/
Локальный файл на удалённый сервер
scp file.txt user@192.168.1.10:/home/user/
file.txt— что копируемuser@192.168.1.10— логин и хост/home/user/— каталог назначения (должен существовать и быть доступен по правам)
Типичный прогресс:
file.txt 100% 12KB 1.2MB/s 00:00
Переименовать при копировании
scp file.txt user@192.168.1.10:/home/user/file_new_name.txt
Каталог целиком
scp -r folder/ user@192.168.1.10:/home/user/
Слеш в конце folder/ vs folder влияет на то, как оболочка и scp воспринимают имя, но для -r обычно копируется сама директория. Перед большой выгрузкой проверьте место: df -h на целевой стороне.
Нестандартный порт SSH
scp -P 2222 file.txt user@192.168.1.10:/home/user/
Порт должен слушать sshd, firewall и security-group должны пропускать TCP. Ошибка «Connection refused» почти всегда про это, а не про scp как таковой.
С удалённого сервера на локальную машину
scp user@192.168.1.10:/home/user/file.txt /path/on/local/
В текущий каталог:
scp user@192.168.1.10:/home/user/file.txt ./
Директория с remote:
scp -r user@192.168.1.10:/home/user/folder/ ./
Между двумя удалёнными серверами
scp user1@192.168.1.10:/path/file.txt user2@192.168.1.20:/path/dest/
Чтобы явно гнать данные через вашу локальную машину (удобно, когда серверы не видят друг друга по SSH, или не хотите полагаться на agent forwarding):
scp -3 user1@192.168.1.10:/path/file.txt user2@192.168.1.20:/path/dest/
Минус -3: весь объём проходит через ваш канал. На гигабайтах это заметно.
Ключи, сжатие, отладка
# отдельный ключ scp -i ~/.ssh/id_deploy file.txt user@host:/var/www/ # сжатие scp -C big.log user@host:/tmp/ # понять, где залипает scp -v file.txt user@host:/tmp/
Для регулярных выкладок чаще удобнее rsync -avz -e ssh: докачка, исключение файлов, меньше лишнего трафика. SCP остаётся хорош для разовых «закинь конфиг / сними лог».
Безопасность и типичные грабли
- Перезапись без вопросов. Существующий файл на цели scp перезапишет молча. Перед массовым копированием проверьте пути.
- SSH-ключи вместо пароля в скриптах и CI. Права на ключ:
chmod 600. - Не путайте
-Pи-p. Порт — большая P, сохранение timestamps — маленькая. - Права и SELinux/AppArmor. Файл может «приехать», но сервис его не прочитает из-за контекста или владельца.
- Устаревший scp-протокол. В новых OpenSSH по умолчанию часто SFTP backend под капотом у
scp. Поведение в основном совместимо, но при странных ошибках смотрите версию:ssh -V.
Краткий чеклист
- Локально → remote:
scp file user@host:/path/ - Remote → локально:
scp user@host:/path/file ./ - Каталог: добавьте
-r - Порт:
-P 2222 - Два remote и нет прямой связности:
-3
SCP — быстрый и понятный инструмент для защищённой копии по SSH. Для одноразовых задач его хватает с запасом; для зеркалирования каталогов и регулярного деплоя смотрите в сторону rsync и SFTP-клиентов.


