Cómo usar Netcat para transferir archivos rápidamente entre computadoras con Linux

No faltan las soluciones de software que pueden ayudarlo a transferir archivos entre computadoras. Sin embargo, si hace esto muy raramente, las soluciones típicas como NFS y SFTP (a través de OpenSSH) pueden ser excesivas. Además, estos servicios están permanentemente abiertos a la recepción y gestión de conexiones entrantes. Configurado incorrectamente, esto podría hacer que su dispositivo sea vulnerable a ciertos ataques.

netcat, la llamada “navaja suiza TCP/IP”, se puede utilizar como una solución ad-hoc para transferir archivos a través de redes locales o Internet. También es útil para transferir datos hacia/desde sus máquinas virtuales o contenedores cuando no incluyen la función lista para usar. Incluso puede usarlo como un mecanismo de copiar y pegar entre dos dispositivos.

Cómo instalar netcat en varias distribuciones de Linux

La mayoría de los sistemas operativos basados ​​en Linux vienen con esto preinstalado. Abra una terminal y escriba:

netcat-comando-no-encontrado

Si no encuentra el comando, instale el paquete que contiene netcat, una variante de BSD. También existe la versión de netcat de GNU que contiene menos funciones. Necesita netcat tanto en la computadora que recibe el archivo como en la que lo envía.

En distribuciones basadas en Debian como Ubuntu o Linux Mint, instale la utilidad con:

sudo apt install netcat-openbsd

Con openSUSE, siga las instrucciones en esta páginaespecífico para su distribución exacta.

En Arch Linux ingrese el siguiente comando:

sudo pacman -S openbsd-netcat

Desafortunadamente, la familia RedHat no incluye las variantes BSD o GNU de netcat. Por alguna extraña razón, decidieron optar por nmap-ncat. Si bien es similar, algunas opciones de la línea de comandos no están disponibles, por ejemplo -N. Esto significa que tendrá que reemplazar una línea como nc -vlN 1234 > nc con nc -vl 1234 > nc para que funcione en RedHat/Fedora.

Para instalar ncat en RedHat:

sudo yum install nmap-ncat

Y en Fedora:

sudo dnf install nmap-ncat

Cómo usar netcat para transferir archivos entre computadoras Linux

En la computadora que recibirá el archivo, busque la dirección IP utilizada en su red interna.

Después de «src», verá la dirección IP de la red interna del dispositivo. Si, por alguna razón, los resultados son irrelevantes, también puedes probar:

netcat-encontrar-dirección-ip

En la captura de pantalla ofrecida como ejemplo, la IP es 10.11.12.10.

En la misma computadora, la que recibirá el archivo, ingrese este comando:

nc -vl 44444 > pick_desired_name_for_received_file

netcat-recibiendo-archivo

Y en la computadora que enviará el archivo, escriba esto, reemplazando 10.11.12.10 con la IP que descubrió anteriormente:

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

netcat-enviando-archivo

Las rutas de directorios y archivos pueden ser absolutas o relativas. Una ruta absoluta es «/home/user/Pictures/file.png». Pero si ya está en «/inicio/usuario», puede usar la ruta relativa, «Imágenes/archivo.png», como se ve en la captura de pantalla anterior.

En el primer comando se utilizaron dos parámetros: -v y -l. -v hace que la salida sea detallada, imprimiendo más detalles, para que pueda ver lo que está pasando. -l hace que la utilidad «escuche» en el puerto 44444, esencialmente abriendo un canal de comunicación en el dispositivo receptor. Si tiene reglas de firewall activas, asegúrese de que no estén bloqueando la conexión.

En el segundo comando, -N hace que netcat se cierre cuando se realiza la transferencia.

Normalmente, netcat mostraría en la terminal todo lo que recibe. > crea una redirección para esta salida. En lugar de imprimirlo en la pantalla, envía toda la salida al archivo especificado después >. < funciona a la inversa, tomando la entrada del archivo especificado en lugar de esperar la entrada del teclado.

Si usa los comandos anteriores sin redirecciones, por ejemplo, nc -vl 44444 y nc -N 10.11.12.10 44444, creas un “chat” rudimentario entre los dos dispositivos. Si escribe algo en una terminal y presiona Enter, aparecerá en la otra computadora. Así es como puede copiar y pegar texto de un dispositivo a otro. Presione Ctrl + D (en el remitente) o Ctrl + C (en cualquier lugar) para cerrar la conexión.

Optimizar transferencias de archivos

Cuando envía archivos grandes, puede comprimirlos sobre la marcha para acelerar la transferencia.

En el extremo receptor ingrese:

nc -vl 44444 | gunzip > pick_desired_name_for_file

Y en el remitente, ingrese lo siguiente, reemplazando 10.11.12.10 con la dirección IP de su dispositivo receptor:

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

Enviar y recibir directorios

Obviamente, a veces es posible que desee enviar varios archivos a la vez, por ejemplo, un directorio completo. Lo siguiente también los comprimirá antes de enviarlos a través de la red.

En el extremo receptor, use este comando:

netcat-receiver-tar-gzipped-directory

En el dispositivo de envío, utilice:

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

netcat-sending-tar-gzipped-directory

Conclusión

Preferiblemente, solo usaría esto en su red de área local. La razón principal es que el tráfico de red no está cifrado. Si enviara esto a un servidor, a través de Internet, sus paquetes de datos podrían ser interceptados a lo largo de la ruta de la red. Pero si los archivos que transfiere no contienen datos confidenciales, no es un problema real. Sin embargo, los servidores generalmente tienen SSH preconfigurado para aceptar conexiones FTP seguras, y puede usar SFTP en su lugar para transferencias de archivos.

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *