ГлавнаяОперационные системыLinuxКак использовать Netcat для быстрой передачи файлов между компьютерами Linux

Как использовать Netcat для быстрой передачи файлов между компьютерами Linux

Нет недостатка в программных решениях, которые помогут вам передавать файлы между компьютерами. Однако если вы делаете это очень редко, типичные решения, такие как NFS и SFTP (через OpenSSH), могут оказаться излишними. Более того, эти службы постоянно открыты для приема и обработки входящих соединений. Неправильная настройка может сделать ваше устройство уязвимым для определенных атак.

netcat, так называемый «швейцарский армейский нож TCP/IP», может использоваться в качестве специального решения для передачи файлов через локальные сети или Интернет. Это также полезно для передачи данных в/из ваших виртуальных машин или контейнеров, если они не включают эту функцию «из коробки». Вы даже можете использовать его как механизм копирования и вставки между двумя устройствами.

Читайте также: Как безопасно передавать файлы в Linux с помощью SCP

Как установить netcat в различных дистрибутивах Linux

Большинство операционных систем на базе Linux поставляются с предустановленной функцией. Откройте терминал и введите:

netcat

netcat-команда не найдена

Если команда не найдена, установите пакет, содержащий netcat, вариант BSD. Существует также версия netcat от GNU, которая содержит меньше функций. Вам нужен netcat как на компьютере, получающем файл, так и на том, который его отправляет.

В дистрибутивах на базе Debian, таких как Ubuntu или Linux Mint, установите утилиту с помощью:

Contents

Как установить netcat в различных дистрибутивах Linux

> netcat-openbsd

С openSUSE, следуйте инструкциям на этой странице , в зависимости от вашего дистрибутива.

В Arch Linux введите следующую команду:

sudo pacman -S openbsd-netcat

К сожалению, семейство RedHat не включает варианты netcat для BSD или GNU. По какой-то странной причине они решили использовать nmap-ncat. Несмотря на схожесть, некоторые параметры командной строки недоступны, например -N. Это означает, что вам придется заменить строку, например nc -vlN 1234 > nc, на nc -vl 1234 > nc, чтобы она работала в RedHat/Fedora.

Чтобы установить ncat на RedHat:

sudo yum install nmap-ncat

И в Fedora:

sudo dnf install nmap-ncat

Как использовать netcat для передачи файлов между компьютерами Linux

На компьютере, который получит файл, найдите IP-адрес, используемый в вашей внутренней сети.

ip route get 8.8.8.8

После «src» вы увидите IP-адрес устройства во внутренней сети. Если по какой-то причине результаты неактуальны, вы также можете попробовать:

ip address

netcat-найти-IP-адрес

На скриншоте, предложенном в качестве примера, IP — 10.11.12.10.

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

nc -vl 44444 > pick_desired_name_for_received_file

netcat-получение-файла

И на компьютере, который отправит файл, введите это, заменив 10.11.12.10 на обнаруженный ранее IP-адрес:

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

netcat-отправка-файла

Пути к каталогам и файлам могут быть абсолютными или относительными. Абсолютный путь — «/home/user/Pictures/file.png». Но если вы уже находитесь в папке «/home/user», вы можете использовать относ

Как использовать netcat для передачи файлов между компьютерами Linux

>В первой команде использовались два параметра: -vи -l. -vделает вывод более подробным, печатая более подробную информацию, чтобы вы могли видеть, что происходит. -lзаставляет утилиту «прослушивать» порт 44444, по сути открывая канал связи на принимающем устройстве. Если у вас активны правила брандмауэра, убедитесь, что они не блокируют соединение.

Во второй команде -Nзаставляет netcat закрыться после завершения передачи.

Обычно netcat выводит на терминал все, что получает. >создает перенаправление для этого вывода. Вместо того, чтобы печатать его на экране, он отправляет весь вывод в файл, указанный после >. <работает наоборот: принимает ввод из указанного файла вместо ожидания ввода с клавиатуры.

Если вы используете приведенные выше команды без перенаправлений, например, nc -vl 44444и nc -N 10.11.12.10 44444, вы создаете элементарный «чат» между двумя устройствами. Если вы напишете что-то в одном терминале и нажмете Enter, оно появится на другом компьютере. Вот как вы можете копировать и вставлять текст с одного устройства на другое. Нажмите Ctrl+ D(на отправителе) или Ctrl+ C(в любом месте), чтобы закрыть соединение.

Оптимизация передачи файлов

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

На принимающей стороне введите:

nc -vl 44444 | gunzip > pick_desired_name_for_file

И в отправителе введите следующее, заменив 10.11.12.10 IP-адресом вашего принимающего устройства:

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

Каталоги отправки и получения

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

На принимающей стороне используйте следующую команду:

nc -vl 44444 | tar zxv

netcat-получение-tar-gzipped-каталога

На отправляющем устройстве используйте:

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

netcat-отправка-tar-gzipped-каталог

Заключение

Предпочтительно использовать это только в своей локальной сети. Основная причина заключается в том, что сетевой трафик не зашифрован. Если вы отправите это на сервер через Интернет, ваши пакеты данных могут быть перехвачены по сетевому пути. Но если передаваемые вами файлы не содержат конфиденциальных данных, это не является серьезной проблемой. Однако на серверах обычно SSH предварительно настроен для приема безопасных FTP-соединений, и вместо этого вы можете использовать SFTP для передачи файлов.

Оптимизация передачи файлов

Каталоги отправки и получения

Заключение

ПОХОЖИЕ СТАТЬИ

Популярные записи