Como usar o Netcat para transferir arquivos rapidamente entre computadores Linux

Não faltam soluções de software que podem ajudá-lo a transferir arquivos entre computadores. No entanto, se você fizer isso muito raramente, soluções típicas como NFS e SFTP (via OpenSSH) podem ser exageradas. Além disso, esses serviços estão permanentemente abertos para receber e processar as comunicações recebidas. Configurado incorretamente, isso pode tornar seu dispositivo vulnerável a certos ataques.

Netcat, o chamado canivete suíço TCP / IP, pode ser usado como uma solução dedicada para a transferência de arquivos através de redes locais ou da Internet. Também é útil transferir dados de / para máquinas virtuais ou contêineres quando não incluídos no recurso. Você pode até mesmo usá-lo como um mecanismo de copiar e colar entre dois dispositivos.

Como usar o Netcat para transferir arquivos rapidamente entre computadores com Linux - Linux

Como instalar o netcat em várias distribuições Linux

A maioria dos sistemas operacionais Linux vem pré-instalado com o netcat. Abra um terminal e digite:

netcat
Como usar o Netcat para transferir arquivos rapidamente entre computadores com Linux - Linux

Se o comando não for encontrado, instale o pacote que contém o netcat, que é uma variante do BSD. Também existe uma versão GNU do netcat que possui menos recursos. Você precisa do netcat no computador que recebe o arquivo e no computador de onde o envia.

Em distribuições baseadas em Debian, como Ubuntu ou Linux Mint, instale o utilitário com:

sudo apt install netcat-openbsd

Usando o openSUSE, siga as instruções em Esta página , Para sua distribuição exata.

No Arch Linux, digite o seguinte comando:

sudo pacman -S openbsd-netcat

Infelizmente, a família RedHat não inclui as variantes BSD ou GNU do netcat. Por alguma razão estranha, eles decidiram ir com o nmap-ncat. Embora algumas opções de linha de comando sejam semelhantes, elas não estão disponíveis, por exemplo -N. Isso significa que você terá que substituir uma fonte como nc -vlN 1234> nc por nc -vl 1234> nc para que funcione no RedHat / Fedora.

Para instalar ncat No RedHat:

sudo yum install nmap-ncat

E no Fedora:

sudo dnf install nmap-ncat

Como usar o netcat para transferir arquivos entre computadores Linux

No computador que receberá o arquivo, localize o endereço IP em uso na sua rede interna.

ip route get 8.8.8.8

distância "srcVocê verá o endereço IP da rede interna do dispositivo. Se os resultados forem, por algum motivo, irrelevantes, você também pode tentar:

ip address
Como usar o Netcat para transferir arquivos rapidamente entre computadores com Linux - Linux

Na captura de tela do exemplo mostrado, o endereço IP é 10.11.12.10.

No mesmo computador que receberá o arquivo, digite este comando:

nc -vl 44444 > pick_desired_name_for_received_file
Como usar o Netcat para transferir arquivos rapidamente entre computadores com Linux - Linux

E no computador que vai enviar o arquivo, escreva e substitua o número 10.11.12.10 Com o IP que você descobriu antes:

nc -N 10.11.12.10 44444 < /path/to/file/you/want/to/send
Como usar o Netcat para transferir arquivos rapidamente entre computadores com Linux - Linux

Os caminhos de diretório e arquivo podem ser absolutos ou relativos. O caminho absoluto é “/home/user/Imagens/arquivo.png“. Mas se você já está em casa / usuárioVocê pode usar o caminho relativo.Imagens / arquivo.pngConforme mostrado na imagem acima.

No primeiro comando foram usados ​​dois parâmetros: -v و - l، -v A saída detalhada é impressa para obter mais detalhes, para que você possa ver o que está acontecendo. -l Isso faz com que a ferramenta "escute" na porta 44444, essencialmente abrindo um canal de comunicação no receptor. Se as regras de firewall estiverem ativas, certifique-se de que não estejam bloqueando a conexão.

Na segunda questão, -N Faz netcat Ele fecha quando a transferência é concluída.

Normalmente, isso resultará netcat No Terminal tudo foi recebido. > Cria um redirecionamento para esta saída. Em vez de imprimi-lo na tela, ele envia toda a saída para o arquivo especificado ainda>. <Ele funciona ao contrário, recebendo a entrada do arquivo selecionado em vez de esperar pela entrada do teclado.

Se você usar os comandos acima sem redirecionamentos, por exemplo, nc-vl 44444, nc -N 10.11.12.10 44444 , Você pode criar um “bate-papo” rudimentar entre os dois dispositivos. Se você digitar algo em um Terminal e pressionar Enter, ele aparecerá no outro computador. É assim que você pode copiar e colar texto de um dispositivo para outro. Clique em Ctrl + D (No remetente) ou Ctrl + C (Em qualquer lugar) para fechar a conexão.

Transferência de arquivo aprimorada

Ao enviar arquivos grandes, você pode compactá-los facilmente para aumentar a velocidade de transferência.

Na extremidade de recebimento, digite:

nc -vl 44444 | gunzip> pick_desired_name_for_file

E no dispositivo do remetente, digite o seguinte e substitua o número 10.11.12.10 Com o endereço IP do seu receptor:

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

Enviar e receber pastas

Obviamente, às vezes você pode querer enviar vários arquivos simultaneamente, por exemplo, uma pasta inteira. A próxima compactação também irá compactá-lo antes de enviar pela rede.

Na extremidade receptora, use este comando:

nc -vl 44444 | tar zxv

Como usar o Netcat para transferir arquivos rapidamente entre computadores com Linux - Linux

No transmissor, use:

tar czp /path/to/directory/to/send | nc -N 10.11.12.10 44444
Como usar o Netcat para transferir arquivos rapidamente entre computadores com Linux - Linux

Conclusão

De preferência, você só usará isso em sua rede local. O principal motivo é que o tráfego da rede não é criptografado. Se você estiver enviando isso para um servidor, pela Internet, seus pacotes de dados podem ser interceptados ao longo de um caminho de rede. Mas se os arquivos que você está transferindo não contêm dados confidenciais, não é um problema real. No entanto, os servidores geralmente são pré-instalados com SSH para aceitar conexões FTP seguras e você pode usar SFTP para transferir arquivos.

Ir para o botão superior