Передача файлов между 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, откройте или командную строку и выполните команду:

  1. Перейдите в папку с файлом, который нужно передать, командой cd C:\путь\к\папке.
  2. Выполните команду: 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:/путь/на/сервере/
Какой метод передачи файлов по SSH вы используете чаще всего?
SCP
SFTP
WinSCP
Другой

Способ 2: Использование SFTP

SFTP (SSH File Transfer Protocol) — более гибкий протокол, чем SCP. Он позволяет не только копировать файлы, но и управлять ими на сервере: создавать папки, удалять файлы, менять права доступа.

Чтобы подключиться к серверу через из Windows:

  1. Откройте или командную строку.
  2. Выполните команду: sftp -P 22 username@server_ip
  3. Введите пароль, когда будет предложено.

После подключения вы попадёте в интирактивный режим SFTP. Вот основные команды:

КомандаОписаниеПример
putЗагрузить файл на серверput C:\file.txt /remote/path/
getСкачать файл с сервераget /remote/file.txt C:\downloads\
lsПоказать файлы в текущей папке на сервереls /remote/path/
llsПоказать файлы в текущей папке на Windowslls C:\
cdСменить папку на сервереcd /remote/path/
lcdСменить папку на Windowslcd C:\downloads\
mkdirСоздать папку на сервереmkdir /remote/new_folder
exitВыход из SFTPexit

Пример сессии:

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:

  1. Скачайте и установите WinSCP с официального сайта.
  2. При первом запуске выберите протокол SFTP или SCP (рекомендуется SFTP).
  3. Введите данные для подключения:
    • Имя хоста — IP-адрес или домен сервера;
    • Порт — 22 (или ваш кастомный);
    • Имя пользователя и пароль;
    • Если используете SSH-ключ, укажите путь к приватному ключу в разделе «Аутентификация».
  4. Нажмите «Войти». Если всё настроено правильно, откроется окно с двумя панелями: локальной (Windows) и удалённой (Linux).
  5. Перетащите файлы мышью из одной панели в другую, чтобы скопировать их.

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

Выполнено: 0 / 7

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

Можно ли передавать файлы по без пароля?

Да, если настроить аутентификацию по 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.