Передача файлов между Windows и Linux через SSH — задача, с которой рано или поздно сталкивается каждый, кто работает с удалёнными серверами. Самый надёжный способ — использовать протоколы SCP или SFTP, встроенные в SSH. Они шифруют данные, гарантируют безопасность и не требуют дополнительных настроек, если SSH-доступ уже настроен.
В этой статье разберём три проверенных метода: через командную строку с scp, с помощью клиента sftp и через графический интерфейс WinSCP. Каждый способ имеет свои плюсы — выберите тот, что удобнее для вашей задачи.
Почему SSH — лучший выбор для передачи файлов
SSH (Secure Shell) не только обеспечивает удалённый доступ к серверу, но и позволяет безопасно передавать файлы. В отличие от FTP, который передаёт данные в открытом виде, шифрует весь трафик, включая логин, пароль и сами файлы. Это критично важно, если вы работаете в небезопасных сетях или передаёте конфиденциальную информацию.
Кроме безопасности, у есть ещё несколько плюсов:
- Низкая нагрузка на сеть — протокол оптимизирован для работы даже на медленных соединениях.
- Поддержка в большинстве дистрибутивов Linux «из коробки».
- Возможность автоматизации через скрипты (например, для бэкапов).
Единственный минус — для передачи файлов через нужно знать основы работы с командной строкой. Но это не так сложно, как кажется.
Если вы часто передаёте файлы на один и тот же сервер, сохраните параметры подключения в файле ~/.ssh/config на Linux. Это избавит от необходимости вводить адрес, логин и порт каждый раз.
| Метод | Сложность | Скорость | Подходит для больших файлов | Требует GUI |
|---|---|---|---|---|
SCP (командная строка) | Средняя | Высокая | Да | Нет |
SFTP (командная строка) | Средняя | Средняя | Да | Нет |
| WinSCP (графический интерфейс) | Низкая | Средняя | Да | Да |
rsync по SSH | Высокая | Очень высокая | Да (оптимизирован) | Нет |
Сравнение методов передачи файлов по SSH
Прежде чем переходить к инструкциям, разберёмся, какой метод подойдёт именно вам. Выбор зависит от размера файлов, частоты передачи и ваших предпочтений по удобству.
Если вам нужно передать один-два файла быстро и без лишних движений — SCP подойдёт лучше всего. Для регулярной работы с множеством файлов удобнее WinSCP. А если важна скорость и надёжность — обратите внимание на rsync, но это тема для отдельной статьи.
Подготовка: что нужно знать перед передачей файлов
Перед тем как передавать файлы по с Windows на Linux, убедитесь, что:
- На сервере Linux установлен и запущен SSH-сервер (
sshd). В большинстве дистрибутивов он установлен по умолчанию. Проверить можно командойsudo systemctl status ssh. - У вас есть учётные данные для доступа: IP-адрес или домен сервера, имя пользователя и пароль (или SSH-ключ).
- Порт SSH (по умолчанию
22) открыт в файрволе. Если используете нестандартный порт, укажите его явно в командах. - На Windows установлен клиент SSH. В современных версиях Windows 10/11 он встроен в и командную строку. Для более старых систем потребуется PuTTY или Git Bash.
Если вы используете SSH-ключи вместо пароля, убедитесь, что публичный ключ добавлен в файл ~/.ssh/authorized_keys на сервере. Это ускорит подключение и повысит безопасность.
Способ 1: Передача файлов через SCP
SCP (Secure Copy Protocol) — самый простой способ передать файл по SSH. Он работает поверх и использует тот же порта, что и сам протокол (по умолчанию 22).
Чтобы скопировать файл с Windows на Linux, откройте или командную строку и выполните команду:
- Перейдите в папку с файлом, который нужно передать, командой
cd C:\путь\к\папке. - Выполните команду:
scp -P 22 C:\путь\к\файлу.txt username@server_ip:/путь/на/сервере/Где:22— порт SSH (если используется нестандартный, укажите его);username— имя пользователя на сервере;server_ip— IP-адрес или домен сервера;/путь/на/сервере/— целевая папка на Linux.
⚠️ Внимание: Если в пути к файлу есть пробелы, оберните путь в кавычки: "C:\My Folder\file.txt". В Linux пробелы в путях тоже нужно экранировать или брать в кавычки.
Пример реальной команды:
scp -P 2222 "C:\Users\John\Documents\report.pdf" user@192.168.1.100:/home/user/documents/
Если вы хотите скопировать папку целиком, добавьте флаг -r (рекурсивно):
scp -r -P 22 C:\путь\к\папке\ username@server_ip:/путь/на/сервере/
Способ 2: Использование SFTP
SFTP (SSH File Transfer Protocol) — более гибкий протокол, чем SCP. Он позволяет не только копировать файлы, но и управлять ими на сервере: создавать папки, удалять файлы, менять права доступа.
Чтобы подключиться к серверу через из Windows:
- Откройте или командную строку.
- Выполните команду:
sftp -P 22 username@server_ip - Введите пароль, когда будет предложено.
После подключения вы попадёте в интирактивный режим SFTP. Вот основные команды:
| Команда | Описание | Пример |
|---|---|---|
put | Загрузить файл на сервер | put C:\file.txt /remote/path/ |
get | Скачать файл с сервера | get /remote/file.txt C:\downloads\ |
ls | Показать файлы в текущей папке на сервере | ls /remote/path/ |
lls | Показать файлы в текущей папке на Windows | lls C:\ |
cd | Сменить папку на сервере | cd /remote/path/ |
lcd | Сменить папку на Windows | lcd C:\downloads\ |
mkdir | Создать папку на сервере | mkdir /remote/new_folder |
exit | Выход из SFTP | exit |
Пример сессии:
sftp -P 22 user@192.168.1.100 user@192.168.1.100's password: Connected to 192.168.1.100. sftp> put C:\data\archive.zip /home/user/backups/ Uploading C:\data\archive.zip to /home/user/backups/archive.zip C:\data\archive.zip 100% 500MB 10.2MB/s 00:49 sftp> exit
Способ 3: Графический интерфейс WinSCP
Если командная строка кажется сложной, используйте WinSCP — бесплатный клиент с графическим интерфейсом для Windows. Он поддерживает SCP, SFTP и даже FTP, но нас интересует именно SSH.
Инструкция по настройке WinSCP:
- Скачайте и установите WinSCP с официального сайта.
- При первом запуске выберите протокол
SFTPилиSCP(рекомендуетсяSFTP). - Введите данные для подключения:
- Имя хоста — IP-адрес или домен сервера;
- Порт —
22(или ваш кастомный); - Имя пользователя и пароль;
- Если используете SSH-ключ, укажите путь к приватному ключу в разделе «Аутентификация».
- Нажмите «Войти». Если всё настроено правильно, откроется окно с двумя панелями: локальной (Windows) и удалённой (Linux).
- Перетащите файлы мышью из одной панели в другую, чтобы скопировать их.
WinSCP удобен для работы с большим количеством файлов: вы можете выделять несколько файлов, сравнивать папки, синхронизировать каталоги и даже редактировать файлы напрямую на сервере.
WinSCP — лучший выбор для новичков и тех, кто предпочитает графический интерфейс. Он сочетает простоту использования с мощными функциями, такими как синхронизация папок и редактирование файлов на сервере.
Дополнительные советы и хитрости
Передача файлов по может быть ещё удобнее, если знать несколько хитростей:
- Сжатие данных: Используйте флаг
-Cвscp, чтобы сжимать файлы при передаче. Это ускорит процесс, если у вас медленный канал:scp -C -P 22 file.txt user@server:/path/ - Ограничение скорости: Если нужно ограничить пропускную способность (например, чтобы не нагружать сеть), используйте флаг
-lвscp:scp -l 1000 -P 22 file.txt user@server:/path/Здесь1000— лимит скорости в Кбит/с. - Сохранение прав доступа: Чтобы сохранить права доступа и временные метки файлов при копировании, используйте флаг
-p:scp -p -P 22 file.txt user@server:/path/ - Использование SSH-ключей: Если вы часто подключаетесь к серверу, настройте аутентификацию по SSH-ключам. Это избавит от необходимости вводить пароль каждый раз. Для этого сгенерируйте ключ на Windows с помощью
ssh-keygen, а затем добавьте публичный ключ в~/.ssh/authorized_keysна сервере.
Если вы работаете с большими файлами (от 1 ГБ), рекомендуется использовать rsync по SSH. Он передаёт только изменившиеся части файлов, что экономит время и трафик. Пример команды:
rsync -avz -e "ssh -p 22" C:\путь\к\папке\ user@server:/путь/на/сервере/
Как ускорить передачу больших файлов?
Используйте rsync вместо scp. Он передаёт только изменившиеся части файлов, что особенно эффективно при повторных копированиях. Также можно включить сжатие с флагом -z и ограничить скорость флагом --bwlimit=1000 (в Кбит/с).
Пошаговая инструкция: передаём файл по с на Linux
Чтобы не упустить ни одной детали, следуйте этому чек-листу. Он подойдёт для всех трёх методов, с поправкой на специфику каждого.
Чек-лист для передачи файлов по SSH
Часто задаваемые вопросы
Можно ли передавать файлы по без пароля?
Да, если настроить аутентификацию по SSH-ключам. Сгенерируйте ключ на Windows командой ssh-keygen, а затем добавьте публичный ключ (id_rsa.pub) в файл ~/.ssh/authorized_keys на сервере. После этого подключение будет происходить без запроса пароля.
Почему при передаче файла через возникает ошибка «Permission denied»?
Ошибка «Permission denied» обычно означает, что у вас нет прав на запись в целевую папку на сервере. Проверьте права доступа к папке командой ls -la /путь/к/папке/ на Linux. Если нужно, измените права командой chmod или chown. Также убедитесь, что вы подключаетесь под пользователем, у которого есть доступ к папке.
Как передать файл с на через SSH?
Процесс обратный: используйте scp или sftp, но поменяйте местами источник и приёмник. Например, для SCP команда будет такой: scp -P 22 username@server_ip:/путь/к/файлу C:\путь\на\Windows\. В WinSCP просто перетащите файл из удалённой панели в локальную.
Какие порты нужно открыть для передачи файлов по SSH?
По умолчанию использует порт 22. Если вы изменили порт в конфигурации SSH-сервера (/etc/ssh/sshd_config), укажите его в командах с флагом -P. Никакие дополнительные порты открывать не нужно — SCP и SFTP работают поверх SSH.