Только для посетителей нашего блога: получите дополнительные 3 месяца бесплатно + скидку 10% на трехгодичный план YSBLOG10
Захватить сделку

Команда SCP в Linux | Полное руководство пользователя с примерами (2026)

Команда SCP в Linux обеспечивает безопасное копирование файлов и каталогов между локальными и удаленными системами. SSHОн шифрует данные при передаче, поддерживает ключи и пользовательские порты, а также работает с простым синтаксисом, например: scp source targetИспользуйте его для быстрой передачи резервных копий, конфигурационных файлов или веб-ресурсов на серверы, с возможностью настройки рекурсии, ограничения скорости, сжатия и выбора промежуточных хостов.

если ты manage серверы Для развертывания веб-сайтов изучение команды SCP в Linux экономит время и обеспечивает безопасность передачи данных. В этом практическом руководстве пользователя я объясню, как работает SCP, его синтаксис, надежные примеры, лучшие практики обеспечения безопасности и профессиональные советы, основанные на более чем 12-летнем опыте работы с Linux, облачными и хостинговыми средами в масштабе предприятия (включая YouStableинфраструктура).


Что такое SCP и как он работает?

Что такое SCP и как он работает?

SCP (Secure Copy) — это утилита командной строки, которая копирует файлы между хостами с помощью SSH для аутентификации и шифрования. По умолчанию он подключается к TCP-порту 22 и поддерживает пароли или SSH ключиСовременный открытыйSSH версии используют SFTP Внутренний протокол обеспечивает более безопасную обработку путей, но команда scp и её привычный синтаксис остаются доступными.

  • Зашифровано при передаче (те же криптографические методы и ключи, что и в предыдущем случае). SSH)
  • Работает с локальным и удаленным устройствами, с удаленного устройства на локальное устройство и с удаленного устройства на удаленное устройство.
  • Простой, предсказуемый синтаксис с возможностями настройки рекурсии, портов, ограничений пропускной способности, сжатия и хостов-переходов.
  • Идеально подходит для быстрых разовых передач; для синхронизации/возобновления работы рекомендуется использовать rsync.

Синтаксис SCP (объяснение за 60 секунд)

Базовый формат:

scp [options] source target
scp [options] [[user@]host1:]path1 [[user@]host2:]path2

Примеры источника/цели:

  • Локальный файл: file.txt or ./dir/file.txt
  • Удаленный файл: user@server:/path/to/file.txt
  • IPv6 хост: user@[2001:db8::1]:/path

Ключевое правило: двоеточие в конце пути указывает на удаленный хост. Без двоеточия это локальный путь. Для удаленных каталогов путь следует добавлять после двоеточия.


Основные примеры SCP (с четкими примерами применения)

1) Скопировать файл с локального компьютера на удалённый.

scp index.html user@server:/var/www/html/

Используйте это для загрузки веб-ресурсов, конфигурационных файлов или скриптов на сервер. Если удаленный путь является каталогом, SCP поместит файл внутрь него.

2) Скопировать файл с удалённого компьютера на локальный.

scp user@server:/etc/nginx/nginx.conf ./

Отлично подходит для переноса журналов или резервных копий конфигурации с сервера на рабочую станцию.

3) Скопировать всю директорию целиком (рекурсивно)

scp -r ./site/ user@server:/var/www/html/

-r копирует каталоги рекурсивно. Добавить -p для сохранения временных меток и прав доступа:

scp -rp ./site/ user@server:/var/www/html/

4) Укажите значение, отличное от значения по умолчанию. SSH порт

scp -P 2222 backup.tar.gz user@server:/backups/

Важно: флаг порта пишется заглавными буквами. -P (строчные буквы) -p это «сохранять»).

5) Используйте SSH закрытый ключ (PEM/ED25519/RSA)

scp -i ~/.ssh/id_ed25519 app.war ubuntu@server:/opt/apps/

Вы также можете пройти SSH Параметры конфигурации в общем виде:

scp -o IdentityFile=~/.ssh/key.pem -o IdentitiesOnly=yes file ubuntu@server:/home/ubuntu/

6) Обработка пробелов, скрытых файлов и подстановочных символов.

Пути заключаются в кавычки с пробелами, а удаленные подстановочные знаки — в кавычки, чтобы они раскрывались на удаленном хосте:

# Local file with spaces
scp "My Report.pdf" user@server:/home/user/docs/

# Remote wildcard: quote to prevent local shell expansion
scp 'user@server:/var/log/*.log' ./logs/

# Copy hidden files
scp -r ./app/.env user@server:/var/www/app/

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

Используйте -3 Для копирования данных между двумя удалёнными серверами с маршрутизацией через ваш клиент (данные проходят через ваш компьютер):

scp -3 admin@hostA:/var/backups/db.sql admin@hostB:/var/restore/

8) Используйте промежуточный узел (бастион)

Для частных серверов, расположенных за бастионом, -J упрощает маршрутизацию:

scp -J bastion@public-gw ubuntu@internal-app:/etc/hosts ./

Необходимо знать варианты SCP и что они делают.

  • -r: Рекурсивное копирование (каталогов)
  • -p: Сохранять метки времени и режимы
  • -P <port>: SSH порт (заглавная буква P)
  • -i <key>Используйте файл идентификации (закрытый ключ).
  • -o <ssh_option>: Проходить SSH варианты (например, -o StrictHostKeyChecking=yes)
  • -CСжатие (полезно для текста, конфигурационных файлов, логов)
  • -l <limit>: Ограничение пропускной способности в Кбит/с (например, -l 4000)
  • -J <jump>: Прыжковый хост (бастион)
  • -3: Удалённая связь между удалёнными устройствами через локальный интерфейс
  • -4 / -6: Сила IPv4/IPv6
  • -F <file>Используйте альтернативный вариант. SSH файл конфигурации
  • -q / -v: Тихий / Подробный (добавьте больше букв «v» для отладки)

SSH Ключи и конфигурация для SCP без трения

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

Сгенерируйте ключ и авторизуйте его.

# Create an ED25519 key (fast and secure)
ssh-keygen -t ed25519 -C "you@machine"

# Copy the public key to the server
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server

If ssh-copy-id Если ключ недоступен, вставьте открытый ключ в... ~/.ssh/authorized_keys на сервере и установите права доступа:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Упростите с помощью ~/.ssh/config

Host web-prod
  HostName 203.0.113.10
  User ubuntu
  IdentityFile ~/.ssh/id_ed25519
  Port 22
  Compression yes

# Then simply run:
scp ./build.zip web-prod:/var/www/html/

Рекомендации по обеспечению безопасности SCP

  • Проверяйте ключи хоста при первом подключении; не отключайте проверки с помощью -o StrictHostKeyChecking=no за исключением случаев контролируемого CI.
  • предпочитать SSH Ключи важнее паролей; ограничьте доступ к ключам, установив для них соответствующие права доступа и парольные фразы.
  • Используйте учетные записи с минимальными привилегиями; избегайте использования прав root, если это не необходимо.
  • затвердеть SSHИспользуйте, при необходимости, нестандартный порт, отключите аутентификацию по паролю, обеспечьте использование надежных шифров и MAC-адресов.
  • Аудит передач данных через журналы (/var/log/auth.log или системный журнал) в регулируемых средах.

Устранение неполадок SCP (быстрые решения)

Доступ запрещен (publickey, password)

  • Убедитесь, что вы используете правильного пользователя и ключ (-i or SSH конфигурация).
  • Проверьте права доступа на стороне сервера. ~/.ssh (700) и authorized_keys (600).
  • Run scp -v чтобы увидеть, какая клавиша была использована.

Данный файл или каталог отсутствует

  • Удаленные пути/подстановочные знаки следует заключать в кавычки, чтобы локальная оболочка не разворачивала их.
  • Убедитесь, что каталог существует на целевом устройстве; создайте его с помощью ssh user@server «Мкдир -p /path” перед копированием.
  • Используйте абсолютные пути, чтобы избежать путаницы с рабочим каталогом удаленной оболочки.

Соединение прервано или отклонено по истечении времени ожидания

  • Проверьте наличие порта TCP 22 (или вашего пользовательского порта) в брандмауэре/группах безопасности.
  • проверить DNS или использовать IP-адрес сервера; принудительно IPv4 с -4 если нужно.
  • Используйте scp -v для диагностики доступности порта/хоста и согласования аутентификации.

scp: команда не найдена (удалённо)

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


Советы по производительности и надежности

  • Используйте сжатие для передачи больших объемов текста: scp -C logs.tar.gz user@server:/tmp/
  • Выбирайте быстрые шифры, если они у вас есть. CPU Высота потолка (варьируется в зависимости от Open)SSH версия), например, -c aes128-gcm@openssh.com or -c chacha20-poly1305@openssh.com.
  • Снижение пропускной способности для защиты полосы пропускания: scp -l 8000 big.img user@server:/data/ (8000 Кбит/с ≈ 1 МБ/с).
  • Параллелизация: сам scp не поддерживает параллельную обработку и возобновление выполнения. Для больших деревьев или нестабильных связей предпочтительнее использовать параллельную обработку. rsync -azP or SFTP с резюме.
  • В локальной сети (LAN) следует избегать излишних затрат на шифрование, используя более быстрые алгоритмы; в глобальной сети (WAN) может помочь сжатие данных.

SCP против rsync против SFTPКакой из них следует использовать?

  • Используйте SCP, когда вам нужна быстрая, одноразовая, зашифрованная копия с простым синтаксисом.
  • Используйте rsync для инкрементальной синхронизации, поддержки возобновления, контрольных сумм и надежного зеркального отображения каталогов.
  • Используйте SFTP для интерактивных сессий, возобновляемой загрузки/выгрузки и детальных операций с файлами.
  • Используйте rclone для объектного хранилища (S3, GCS), облачных рабочих процессов и синхронизации между различными провайдерами.

Примечание: Несмотря на заголовки о «прекращении поддержки SCP», современный OpenSSH Сохраняет команду scp, но реализует передачу данных. SFTP По умолчанию это обеспечивает более безопасную работу. Вы можете уверенно использовать scp на современных системах.

Примеры облачных решений: AWS, GCP, Azure.

  • AWS EC2 (Ubuntu): scp -i ~/keys/aws.pem app.tar.gz ubuntu@<public-ip>:/opt/
  • AWS EC2 (Amazon Linux): scp -i ~/keys/aws.pem site.zip ec2-user@<public-ip>:/var/www/html/
  • GCP Compute Engine: scp -i ~/.ssh/gcp ed@<external-ip>:/var/log/syslog ./ (убедитесь, что брандмауэр разрешает) SSH)
  • Виртуальная машина Azure: scp -P 22 -i ~/.ssh/azure key.pub azureuser@<public-ip>:~/.ssh/
  • За бастионом: scp -J user@bastion targetuser@10.0.0.10:/etc/nginx/nginx.conf ./

Автоматизация SCP с помощью скриптов и Cron

Для ночного резервного копирования или развертывания в CI используйте сопряжение ключей с защищенным пользователем и явное указание на их использование. SSH Вариантов. Вот надёжная закономерность:

#!/usr/bin/env bash
set -euo pipefail

HOST="web-prod"
SRC_DIR="/var/backups"
DST_PATH="/backups/$(date +%F)"
LOG="/var/log/backup_scp.log"

mkdir -p "$SRC_DIR"
tar -czf "$SRC_DIR/site-$(date +%F).tar.gz" /var/www/html/

# Copy with compression, bandwidth limit, and strict host key checking
scp -C -l 8000 -o BatchMode=yes -o StrictHostKeyChecking=yes \
  "$SRC_DIR/site-$(date +%F).tar.gz" "${HOST}:${DST_PATH}/" >> "$LOG" 2>&1

echo "Backup completed at $(date)" >> "$LOG"

Планирование с помощью cron (crontab -eДля наборов данных с высокой степенью изменения или больших каталогов переключитесь на rsync, чтобы избежать повторной загрузки неизмененных файлов.

Практические советы от специалистов по хостингу

  • Цитировать удаленные шаблоны: scp 'user@host:/var/log/app/*.log' ./ предотвращает ошибки локального расширения оболочки.
  • Используйте псевдонимы хостов в ~/.ssh/config для стандартизации портов, ключей и промежуточных хостов в вашей команде.
  • Развертывание пакетов в виде архивов (tar.gzВместо тысяч мелких файлов SCP обрабатывает меньшее количество крупных файлов более эффективно.
  • Управляйте дроссельной заслонкой в ​​рабочее время с помощью -l Для защиты потока клиентов: отменить ограничение по времени работы.
  • В системах CI/CD необходимо принудительно выполнять строгие проверки ключей хоста и закреплять ключи хоста для предотвращения рисков атаки типа MITM (атака посредника).

Часто задаваемые вопросы (FAQ)

SCP устарел? Стоит ли мне его продолжать использовать?

Команда scp по-прежнему существует и поддерживается. Более новые открытыеSSH версии реализуют scp с использованием SFTP По умолчанию для более безопасного поведения. Для быстрого и безопасного копирования подходит SCP; для возобновляемой инкрементальной передачи используйте rsync или SFTP.

Как указать порт в SCP?

Используйте заглавные буквы -P, Например: scp -P 2222 file user@server:/path/В качестве альтернативы, укажите порт в ~/.ssh/config для псевдонима хоста.

Как скопировать целую папку с помощью SCP?

Добавить -r для рекурсии и -p для сохранения метаданных: scp -rp ./folder user@server:/path/Рассмотрите возможность использования rsync для больших деревьев файлов и повторяющихся операций синхронизации.

Как использовать PEM/закрытый ключ с SCP?

Используйте -i: scp -i ~/keys/key.pem file ubuntu@<ip>:/path/Вы также можете определить IdentityFile in ~/.ssh/config для более чистой команды и настройки IdentitiesOnly yes.

Может ли SCP возобновить прерванные передачи?

Нет. SCP не имеет встроенной функции резюме. Используйте rsync -P or SFTPАвтора reget/reput для возобновляемой передачи данных, особенно по нестабильным каналам связи или для больших файлов.

Почему SCP постоянно запрашивает мой пароль?

Вероятно, отсутствует или не соответствует. SSH ключи, неправильный пользователь или права доступа на стороне сервера ~/.ssh/authorized_keysУбедитесь в правильности. -i файл, набор chmod 700 ~/.ssh и chmod 600 ~/.ssh/authorized_keysи проверьте свой SSH конфигурации.

Как мне убедиться, что моя передача SCP прошла успешно?

SCP завершает работу с нулевым значением в случае успеха. Для критически важных рабочих процессов сравнивайте контрольные суммы: sha256sum file локально и удалённо после передачи. Для больших каталогов предпочтительнее использовать rsync с контрольными суммами.


Заключение

Команда SCP в Linux предоставляет быстрый, безопасный и простой способ перемещения файлов между серверами. SSHОсвойте основные опции (-r, -p, -P, -i, -C, -J, -l), усыновить SSH ключи и конфигурации, и используйте rsync/SFTP Когда вам необходимо возобновить работу и синхронизацию. При правильном подходе и надежном партнере по хостингу, таком как... YouStableБлагодаря этому вы сможете безопасно и эффективно передавать данные в любом масштабе.

Отправить по:

Прахлад Праджапати

Пралад — специалист по веб-хостингу и эксперт по органическому росту сайтов с упором на SEO из Индии. Активно работая в цифровом пространстве с 2019 года, он помогает людям развивать свои веб-сайты с помощью эффективных и устойчивых стратегий. Увлеченный обучением и быстрой адаптацией, он считает, что мелкие детали приводят к большому успеху. Узнайте его мнение о веб-хостинге и SEO, чтобы улучшить свое присутствие в интернете.

Оставьте комментарий

Ваш электронный адрес не будет опубликован. Обязательные поля помечены * *

Наверх