Гид по технологиям

Передача файлов через netcat в Linux

• 5 min read • Linux • Обновлено 23 Nov 2025
Передача файлов через netcat в Linux
Передача файлов через netcat в Linux

netcat-main-image

Для кого это полезно

  • Для пользователей, которые редко пересылают большие файлы и не хотят настраивать постоянные сервисы (SFTP/NFS).
  • Для быстрого обмена данными между виртуальными машинами или контейнерами без готовых средств передачи.
  • Для администраторов, которым нужен простой «copy-paste» механизм между хостами.

Важно: netcat не обеспечивает шифрование и аутентификацию по умолчанию. Если данные чувствительны, используйте защищённые каналы или добавьте слой шифрования.

Установка netcat на разных дистрибутивах Linux

Большинство дистрибутивов уже включают netcat. Проверьте наличие команды:

netcat

Если команда не найдена, установите пакет. BSD-ветвь netcat (openbsd) имеет больше опций; GNU-версия менее функциональна. netcat должен быть установлен на обоих концах — и у отправителя, и у получателя.

Debian/Ubuntu/Mint:

sudo apt install netcat-openbsd

Arch Linux:

sudo pacman -S openbsd-netcat

openSUSE: следуйте инструкциям для вашей версии на официальных страницах дистрибутива.

RedHat/CentOS/Fedora используют nmap-ncat (интерфейс и опции могут отличаться). Пример установки:

sudo yum install nmap-ncat

Fedora:

sudo dnf install nmap-ncat

Замечание: в nmap-ncat может не быть опции -N. В таких случаях уберите -N из команд (описано ниже).

Как узнать IP на принимающем хосте

На хосте, принимающем файл, найдите IP для внутренней сети:

ip route get 8.8.8.8

После src вы увидите локальный IP. Альтернатива:

ip address

ip-address-example

В примерах далее используется IP 10.11.12.10.

Базовый пример: отправка одного файла

На получающем хосте (слушаем порт и сохраняем вход в файл):

nc -vl 44444 > pick_desired_name_for_received_file

Описание: -v — подробный вывод (verbose), -l — слушать (listen) на указанном порту. Редирект > сохраняет всё, что пришло, в файл.

receiving-file

На отправителе (замените IP на адрес принимающего):

nc -N 10.11.12.10 44444 < /path/to/file/you/want/to/send

Пояснения: -N закрывает соединение после EOF (в BSD-netcat). Во многих версиях ncat или gnu-netcat опции и поведение могут отличаться — см. документацию.

Если вы запустите nc -vl 44444 и nc 10.11.12.10 44444 без редиректов, вы получите простую текстовую связь между терминалами — это можно использовать как «копипаст» между машинами. Для завершения передачи нажмите Ctrl+D на отправителе или Ctrl+C в любом месте.

Проверка целостности (рекомендуется)

Перед передачей и после неё сравните контрольные суммы, чтобы убедиться, что файл не повреждён:

На отправителе:

sha256sum /path/to/file/you/want/to/send

На принимающем после завершения:

sha256sum pick_desired_name_for_received_file

Хеши должны совпадать.

Оптимизация: сжатие на лету

Для ускорения передачи больших файлов можно сжимать данные «на лету».

На принимающем распаковываем поток и сохраняем файл:

nc -vl 44444 | gunzip > pick_desired_name_for_file

На отправителе сжимаем и отправляем:

gzip -c /path/to/file/you/want/to/send | nc -N 10.11.12.10 44444

Обратите внимание: при использовании сжатия важно, чтобы команды на обеих сторонах соответствовали формату (gzip/gunzip).

Передача директорий (архивирование + сжатие)

Для отправки целой папки удобно использовать tar с компрессией.

На принимающем распаковываем входящий tar.gz поток:

nc -vl 44444 | tar zxv

receiving-tar

На отправителе создаём и отправляем tar-архив:

tar czp /path/to/directory/to/send | nc -N 10.11.12.10 44444

sending-tar

Параметры tar:

  • c — создать архив
  • z — gzip-компрессия
  • p — сохранить права доступа
  • x/v — распаковка/подробный вывод на принимающем

Альтернативные подходы

Если netcat вам не подходит, рассмотрите:

  • scp/rsync — зашифрованные и удобные для повторных синхронизаций.
  • sftp — если уже развернута SSH-служба.
  • python -m http.server + wget/curl — быстрый метод для одноразовой передачи в контролируемой сети.
  • ncat (nmap) — похожий инструмент с собственными опциями и возможным SSL-поддержкой.

Когда netcat не подходит или даёт сбои

  • Требуется шифрование и аутентификация на сетевом уровне.
  • Нельзя открывать порты по соображениям политики безопасности.
  • Интернет-передача через ненадёжные сети без дополнительного шифрования.
  • Требуется продвинутая синхронизация (например, частичные обновления файлов) — тогда лучше использовать rsync.

Простая методика передачи (мини-SOP)

  1. На принимающем: определить IP и выбрать свободный порт.
  2. На обеих сторонах проверить доступность порта (firewall).
  3. На отправителе вычислить хеш файла (sha256sum).
  4. Открыть netcat-listener на принимающем и отправить файл с проверкой на стороне получателя.
  5. Сверить контрольные суммы и удалить временные сервисы/файлы.

Пример с шифрованием через OpenSSL (если нужно шифровать канал)

На принимающем создайте ключ/сертификат или используйте существующие, затем запустите s_server и распакуйте поток:

openssl req -x509 -nodes -newkey rsa:2048 -keyout key.pem -out cert.pem -days 1
openssl s_server -accept 44444 -cert cert.pem -key key.pem -quiet | tar xzv

На отправителе:

tar czp /path/to/directory | openssl s_client -connect 10.11.12.10:44444 -quiet

Этот вариант добавляет шифрование TLS поверх TCP, снижая риск перехвата в открытых сетях.

Рекомендации по безопасности и жёсткая настройка

  • Используйте netcat только в доверенных сетях или добавляйте шифрование (OpenSSL/SSH).
  • Открывайте минимально необходимый порт и закрывайте его после передачи.
  • Ограничьте слушающий интерфейс (если возможно), например, привязываясь к конкретному IP.
  • Настройте правила файервола (ufw/iptables) для разрешения соединения только между двумя хостами.
  • Всегда проверяйте контрольные суммы после передачи.
  • Не передавайте конфиденциальные данные без шифрования.

Чеклист по ролям

Отправитель:

  • Убедился в корректном IP получателя
  • Проверил доступность порта (telnet/nc)
  • Вычислил контрольную сумму
  • Отправил файл/каталог с нужными правами

Получатель:

  • Запустил listener на выбранном порту
  • Убедился в свободном месте на диске
  • Проверил и распаковал полученный файл
  • Сверил контрольную сумму

Администратор сети:

  • Разрешил соединение в файерволе только между конкретными IP
  • Мониторит временные слушатели и логи
  • При необходимости организовал VPN/SSH туннель для передачи

Критерии приёмки

  • Файл(ы) успешно доставлены на принимающий хост.
  • Контрольные суммы совпадают.
  • Права доступа и владельцы файлов корректны.
  • Порт/служба закрыты после завершения операции (если это требование).

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

  • netcat (nc) — утилита для чтения/записи данных в сетевые соединения по TCP/UDP.
  • stdin/stdout — стандартный ввод/вывод в UNIX-подобных системах.
  • tar.gz — архив с gzip-компрессией.

Когда лучше выбрать альтернативу

  • Для регулярных переносов и синхронизации каталогов — rsync.
  • Для безопасных одноразовых копий через Интернет — scp/sftp (SSH).
  • Для быстрых простых раздач в контролируемой сети — HTTP-сервер + wget.

Краткое резюме

netcat — удобный и гибкий инструмент для переноса файлов и директорий без сложной настройки. Он особенно полезен в локальных или доверенных средах и при работе с виртуальными машинами. Для безопасных передач используйте дополнительно шифрование (OpenSSL/SSH) и всегда сверяйте контрольные суммы. Применяйте простую методику: определить IP, открыть слушатель, отправить, проверить хеш и закрыть слушатель.

Важно: выбирайте инструмент в зависимости от требований к безопасности и повторяемости операции.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро