Копиране на файлове чрез SSH: Пълно ръководство за SCP, rsync и SFTP
SSH (Secure Shell) е основата на безопасното управление на отдалечени сървъри. Независимо дали сте разработчик, който развива код, системен администратор, управляващ инфраструктура, или опитен потребител, поддържащ VPS Hosting среда, прехвърлянето на файлове безопасно между машини е задача, която ще выполнявате постоянно.
Това всеобхватно ръководство обхваща всеки основен метод за копиране на файлове чрез SSH — включително SCP, rsync, SFTP и автоматизация на базата на ключове — с реална синтаксис, практически примери и експертни съвети, които ще ви помогнат да работите по-бързо и по-безопасно.
Защо да използвам SSH за трансфер на файлове?

Преди да се потопим в инструментите, си струва да разберем защо SSH-базираният трансфер на файлове е индустриалният стандарт за администратори на сървъри и разработчици.
- Криптиране от край до край: Всеки байт данни — включително идентификационни данни, команди и съдържание на файлове — е криптиран при предаване с помощта на съвременни криптографски алгоритми. Това прави SSH трансферите имунни на packet sniffing и man-in-the-middle атаки.
- Не е необходим допълнителен софтуер: SSH е прединсталиран на практически всяка Linux/Unix система и е естествено достъпен на Windows 10+ и macOS.
- Универсалност: Едно SSH свързване може да обработва интерактивни shell сесии, трансфер на файлове, port forwarding и автоматизирани скриптове.
- Благоприятна за автоматизация: SSH се интегрира безпроблемно с cron jobs, CI/CD pipelines и backup скриптове, което позволява напълно автоматизирани, трансфери на файлове без парола.
- Надежност: SSH свързванията обработват прекъсванията на мрежата грациозно, особено когато се комбинират с инструменти като rsync.
Метод 1: Копиране на файлове със SCP (Secure Copy Protocol)

SCP е най-простият и широко използван инструмент за еднократни трансфери на файлове през SSH. Той работи, като използва вашата съществуваща SSH връзка за безопасно копиране на файлове между хостове.
1) Основен синтаксис на SCP
scp [options] [source] [destination]2) Качване на файл от локална машина на отдалечен сървър
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 | целевата директория или пътя на файла на отдалечения сървър |
3) Изтегляне на файл от отдалечен сървър на локална машина
scp username@remote_host:/path/to/remote/file /path/to/local/destinationПросто обърнете източника и местоназначението, за да издърпате файл от сървъра на вашата локална машина.
4) Копиране на цяла директория рекурсивно
scp -r /path/to/local/directory username@remote_host:/path/to/remote/destinationФлагът -r казва на SCP да копира директорията и цялото й съдържание рекурсивно, включително вложени поддиректории.
5) Полезни опции на SCP
| Опция | Описание |
|---|---|
| -P [port] | Посочете персонализиран SSH порт (забележка: главна буква -P, за разлика от малката буква -p на SSH) |
| -C | Активирайте компресия за по-бързи трансфери през бавни връзки |
| -i [identity_file] | Използвайте специфичен SSH частен ключ за удостоверяване |
| -l [limit] | Ограничете използването на честотната лента в Kbit/s |
| -q | Тих режим — потискане на изхода на напредъка |
| -v | Подробен режим — полезен за отстраняване на проблеми със връзката |
6) Кога да използвате SCP
SCP е идеален за бързи, еднократни трансфери на файлове, където простотата е важна. Той не изисква конфигурация и работи веднага на всяка система с инсталиран SSH. Въпреки това, за големи директории или повторни трансфери, rsync е значително по-добър избор.
Метод 2: Копиране на файлове с rsync

rsync е професионалният избор за синхронизация и трансфер на файлове през SSH. Неговата убийствена функция е delta transfer: вместо да копира цели файлове, rsync анализира източника и дестинацията и трансфира само променените части. Това спестява огромни количества време и честотна лента при работа с големи файлове или директории, които се актуализират често.
1) Основен синтаксис на rsync
rsync [options] [source] [destination]2) Качване на файл от локална машина на отдалечен сървър
rsync -avz /path/to/local/file username@remote_host:/path/to/remote/destination3) Синхронизиране на цяла директория на отдалечен сървър
rsync -avz /path/to/local/directory/ username@remote_host:/path/to/remote/destination/Важно: Обърнете внимание на наклонената черта / след изходната директория. С наклонена черта, rsync копира съдържанието на директорията. Без нея, rsync копира самата директория като поддиректория на дестинацията.
4) Огледало на директория (Изтриване на файлове, премахнати от източника)
rsync -avz --delete /path/to/local/directory/ username@remote_host:/path/to/remote/destination/Флагът –delete гарантира, че файлове, изтрити от източника, се премахват и от дестинацията, като поддържат и двете локации перфектно синхронизирани.
5) Използване на персонализиран SSH порт
rsync -avz -e "ssh -p 2222" /path/to/local/directory/ username@remote_host:/path/to/remote/destination/6) Полезни опции на rsync
| Опция | Описание |
|---|---|
| -a | Режим архив: запазва разрешения, времеви печати, символни връзки и собственост |
| -v | Подробно: показва прогреса файл по файл по време на трансфер |
| -z | Компресия: намалява данните, трансферирани през мрежата |
| –delete | Изтрива файлове на дестинацията, които вече не съществуват на източника |
| –progress | Показва прогреса в реално време за всеки файл |
| –exclude | Изключва специфични файлове или модели (напр. –exclude ‘*.log’) |
| -n или –dry-run | Симулира трансфера без действително копиране на нещо |
| -e “ssh -p [port]” | Посочва персонализиран SSH порт |
| –bwlimit=[KB/s] | Ограничава скоростта на трансфер, за да избегне насищане на връзката |
7) Кога да използвате rsync
Използвайте rsync за резервни копия, разгръщане и всяка повтаряща се задача за синхронизация. Той е особено мощен при управление на големи кодови бази, медийни библиотеки или експорт на бази данни на Dedicated Server, където ефективността на честотната лента и интегритета на данните са критични.
Метод 3: Копиране на файлове между два отдалечени сървъра

По-малко известна, но изключително полезна възможност на SCP и rsync е способността да прехвърляте файлове директно между два отдалечени сървъра — без маршрутизиране на данните през локалния ви компютър. Това е безценно при миграция на сървъри или синхронизиране на данни между облачни инстанции.
1) Копиране на файлове между два отдалечени сървъра със SCP
scp username1@remote_host1:/path/to/file username2@remote_host2:/path/to/destination2) Копиране на файлове между два отдалечени сървъра с rsync
rsync -avz username1@remote_host1:/path/to/source/ username2@remote_host2:/path/to/destination/Забележка: За да работят трансфери между сървъри, изходният сървър трябва да може да установи SSH връзка с целевия сървър. Може да се наложи да конфигурирате SSH ключове на изходния сървър или да използвате SSH agent forwarding (ssh -A).
3) Трансфер между сървъри чрез SSH тунелиране (алтернативен метод)
Ако директното SSH между сървъри не е възможно поради ограничения на защитната стена, можете да насочите трансфера през локалния ви компютър, използвайки tar и ssh:
ssh username1@remote_host1 "tar czf - /path/to/source" | ssh username2@remote_host2 "tar xzf - -C /path/to/destination"Това потоково предава компресиран архив от сървър 1 директно в сървър 2 чрез вашата локална сесия на терминала.
Метод 4: Копиране на файлове с SFTP (SSH File Transfer Protocol)

SFTP осигурява интерактивен, FTP-подобен опит над криптирана SSH връзка. За разлика от SCP, който е еднокомандно средство, SFTP отваря постоянна сесия, където можете интерактивно да разглеждате директории, качвате, изтегляте, преименувате и изтривате файлове.
1) Стартиране на SFTP сесия
sftp username@remote_hostЩе бъдете преместени в SFTP подсказка (sftp>), от която можете да изпълните следните команди:
2) Съществени SFTP команди
| Команда | Описание |
|---|---|
| ls | Изброй файлове в текущата отдалечена директория |
| lls | Изброй файлове в текущата локална директория |
| cd /remote/path | Промени отдалечената директория |
| lcd /local/path | Промени локалната директория |
| put /local/file /remote/destination | Качи файл на отдалечения сървър |
| get /remote/file /local/destination | Изтегли файл от отдалечения сървър |
| mput *.txt | Качи множество файлове, съответстващи на шаблон |
| mget *.log | Изтегли множество файлове, съответстващи на шаблон |
| mkdir /remote/newdir | Създай директория на отдалечения сървър |
| rm /remote/file | Изтрий файл на отдалечения сървър |
| exit или quit | Затвори SFTP сесията |
3) Свързване към персонализиран SSH порт чрез SFTP
sftp -P 2222 username@remote_host4) Кога да използвате SFTP
SFTP е най-подходящ за интерактивни сесии за управление на файлове — например, когато трябва да разглеждате структура на отдалечена директория, селективно да изтегляте файлове с логове или да качвате конфигурационни файлове на уеб сървър. Много GUI клиенти (като FileZilla, Cyberduck и WinSCP) използват SFTP като основния си протокол, което го прави достъпен и за нетехнически потребители.
Метод 5: Автоматизиране на трансфери на файлове с SSH Key Authentication

Ръчното въвеждане на парола за всеки трансфер на файлове е неефективно и несъвместимо с автоматизацията. SSH key-based authentication решава това, като позволява безпаролни, криптографски защитени входове — предпоставка за всеки автоматизиран backup или deployment workflow.
1) Генериране на SSH Key Pair
На вашата локална машина, стартирайте:
ssh-keygen -t ed25519 -C "your_email@example.com"Забележка: ed25519 е съвременният, препоръчан алгоритъм. Използвайте -t rsa -b 4096, ако имате нужда от съвместимост със по-стари системи.
Следвайте подсказките, за да запазите ключа (местоположение по подразбиране: ~/.ssh/id_ed25519) и по желание задайте парола за допълнителна сигурност.
2) Копиране на вашия публичен ключ на отдалечения сървър
ssh-copy-id username@remote_hostТова добавя вашия публичен ключ към файла ~/.ssh/authorized_keys на отдалечения сървър. Ще бъдете подканени за вашата парола един последен път.
Ако ssh-copy-id не е налична, можете да направите това ръчно:
cat ~/.ssh/id_ed25519.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"3) Тестване на безпаролна аутентификация
ssh username@remote_hostАко се свържете без да бъдете подканени за парола, key-based authentication работи правилно.
4) Автоматизиране на трансфери със Shell Script
С конфигурирана безпаролна SSH, можете сега да автоматизирате трансфери на файлове в cron jobs или скриптове:
#!/bin/bash
# Daily backup script
rsync -avz --delete /var/www/html/ username@backup_server:/backups/www/Добавете това към вашия crontab (crontab -e), за да се изпълнява всяка нощ:
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1Отстраняване на общи проблеми с SSH прехвърляне на файлове

Дори опитни администратори срещат проблеми. Ето най-честите проблеми и техните решения:
Permission Denied (publickey)
- Проверете дали публичният ключ е правилно добавен към ~/.ssh/authorized_keys на отдалечения сървър
- Проверете дали ~/.ssh има разрешения 700 и authorized_keys има разрешения 600
- Потвърдете че SSH демонът позволява удостоверяване с ключ (PubkeyAuthentication yes в /etc/ssh/sshd_config)
Connection Refused
- Проверете дали SSH услугата работи: systemctl status sshd
- Проверете дали се използва правилния порт
- Преглед на правилата на защитната стена: ufw status или iptables -L
Скоростта на прехвърляне е бавна
- Активирайте компресия: добавете -C към SCP или -z към rsync
- Използвайте по-бърз шифър: ssh -c aes128-ctr (по-малко сигурен но по-бърз при връзки с висока латентност)
- За големи прехвърляния, помислете за rsync с –bwlimit за да избегнете насищане на вашата мрежа
Host Key Verification Failed
- SSH отпечатъкът на отдалечения сървър се е променил (може да показва проблем със сигурността или преграждане на сървъра)
- Премахнете стария ключ: ssh-keygen -R remote_host
- Преконектирайте се и проверете новия отпечатък преди да го приемете
Избор на правилния инструмент: SCP vs. rsync vs. SFTP

| Функция | SCP | rsync | SFTP |
|---|---|---|---|
| Лекота на използване | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Делта трансфери | ❌ | ✅ | ❌ |
| Синхронизация на директории | ✅ (рекурсивна) | ✅ (с –delete) | ✅ (ръчна) |
| Интерактивен режим | ❌ | ❌ | ✅ |
| Автоматизация | ✅ | ✅ | ✅ (със скриптове) |
| Ефективност на честотната лента | Ниска | Висока | Ниска |
| Най-добре за | Бързи еднократни трансфери | Резервни копия и синхронизация | Интерактивно разглеждане |
Защита на вашите SSH прехвърляния на файлове: Най-добри практики

Независимо кой инструмент използвате, следвайте тези най-добри практики за сигурност, за да защитите вашите сървъри и данни:
- Деактивирайте удостоверяването с парола — Използвайте SSH ключове изключително и задайте PasswordAuthentication no в /etc/ssh/sshd_config
- Променете портът по подразбиране на SSH — Преместването от порт 22 драматично намалява автоматизираните опити за брутална сила
- Използвайте fail2ban — Автоматично блокирайте IP адреси, които многократно не успеят да се удостоверят
- Ограничете SSH достъпа по IP — Използвайте правила на защитната стена или директиви AllowUsers, за да ограничите кой може да се свърже
- Поддържайте SSH актуализиран — Редовно актуализирайте OpenSSH, за да коригирате известни уязвимости
- Използвайте силни алгоритми на ключове — Предпочитайте ed25519 или rsa-4096 пред по-старите, по-слаби алгоритми
- Защитете вашите уеб приложения — Комбинирайте SSH сигурност с SSL сертификат, за да криптирате целия трафик към вашите уеб услуги
Често задавани въпроси

1) Каква е разликата между SCP и SFTP?
SCP е неинтерактивен инструмент от командния ред, предназначен за бързи, еднокомандни трансфери на файлове. SFTP е интерактивен протокол, който ви позволява да разглеждате, управлявате, качвате и изтегляте файлове в интерфейс, базиран на сесии. И двата използват SSH за криптиране.
2) Мога ли да използвам rsync без SSH?
Да — rsync има собствен режим на демон, който работи без SSH, но е по-малко сигурен. За всеки трансфер, обърнат към интернет, винаги използвайте rsync над SSH (rsync -e ssh).
3) Как да прехвърля файлове, ако моят сървър използва нестандартен SSH порт?
Използвайте флага -P със SCP (scp -P 2222) или опцията -e “ssh -p 2222” с rsync. За SFTP, използвайте sftp -P 2222.
4) SCP е ли остарял?
Разработчиците на OpenSSH отбелязаха, че основният протокол на SCP има ограничения и препоръчват използването на SFTP или rsync за нови работни процеси. Въпреки това, SCP остава широко достъпен и функционален на практически всички системи.
Заключение

Овладяването на трансфер на файлове базиран на SSH е съществено умение за всеки, който управлява сървъри, разгръща приложения или поддържа отдалечена инфраструктура. Всеки инструмент има своето място:
- SCP е вашият избор за бързи, прости, еднократни трансфери
- rsync е незаменим за резервни копия, разгръщане и ефективна синхронизация на големи набори от данни
- SFTP е отличен за интерактивни сесии, където трябва да преглеждате и управлявате файлове в реално време
Комбинирането на тези инструменти с SSH ключова автентификация и солидни практики за сигурност ви дава надежден, автоматизиран и безопасен работен процес за трансфер на файлове, който се мащабира от един Shared Web Hosting акаунт до сложни многосървърни архитектури на Dedicated Servers.
Ако търсите надежда среда за хостинг с висока производителност, в която да практикувате тези умения, изследвайте VPS Hosting планове на AlexHost — изградени за разработчици и системни администратори, които искат пълен root достъп, SSD хранилище и мрежова свързаност на корпоративно ниво.
от всички хостинг услуги