Tutorial de transferencia de archivos croc: envío cifrado multiplataforma, reanudación de puntos de interrupción y retransmisión autoconstruida

Presenta el método de transferencia de archivos cifrados de Croc entre Windows, Linux y macOS, que abarca la instalación, la recepción de contraseñas, la transferencia de directorios y texto, la transferencia de currículum en puntos de interrupción, el proxy y la retransmisión autoconstruida.

Para transferir temporalmente un archivo grande de Windows a Linux, las soluciones comunes requieren iniciar sesión en el disco de la nube, configurar SSH, abrir puertos o configurar un servicio HTTP temporal. croc reduce el proceso a enviar un comando y una frase: los dos extremos establecen una conexión a través de un relé y luego usan PAKE para derivar claves para el cifrado de un extremo a otro.

Compatible con Windows, Linux y macOS, croc puede enviar un solo archivo, varios archivos, directorios o texto breve, y puede continuar una transferencia interrumpida. El relé público predeterminado es adecuado para uso temporal; También puede ejecutar su propia retransmisión cuando tenga requisitos más estrictos en cuanto a límites de red, disponibilidad o registro de conexiones.

Respuesta rápida

El remitente ejecuta:

1
croc send report.zip

El terminal mostrará una frase de recepción similar a example-code-phrase. El receptor de Windows se ejecuta directamente:

1
croc example-code-phrase

La recomendación actual para Linux y macOS es pasar la contraseña a través de una variable de entorno para evitar que aparezca en el nombre del proceso:

1
CROC_SECRET=example-code-phrase croc

Acepte la transferencia después de confirmar que el remitente, el nombre del archivo y el tamaño son correctos. No publique la frase de recepción en chats grupales, tickets o registros públicos; la persona que reciba la frase podrá intentar unirse a la transmisión.

por qué croc no necesita reenvío de puertos

De forma predeterminada, croc permite que tanto el remitente como el receptor se conecten activamente al relé. Por lo tanto, incluso si los dos dispositivos están detrás de NAT o firewalls diferentes, generalmente no es necesario configurar direcciones IP públicas, puertos de entrada o servidores locales.

El relé es responsable de ayudar a ambos extremos a encontrarse y reenviar datos. El contenido del archivo está cifrado de extremo a extremo mediante la clave generada por el remitente y el receptor a través de PAKE (Acuerdo de clave autenticada por contraseña, Acuerdo de clave de autenticación de contraseña). El relevo soluciona el problema de conectividad y la frase participa en el establecimiento de una sesión cifrada compartida por ambas partes.

Esto no significa que se pueda ignorar la seguridad de la contraseña. La frase generada automáticamente debe entregarse al destinatario a través de un canal confiable y la información del archivo aún debe verificarse antes de la transmisión. Para entornos sensibles, también se deben evaluar los metadatos de conexión, el historial del terminal, el portapapeles y los permisos del directorio de recepción visibles para el retransmisor.

Instalar cocodrilo

ventanas

Utilice WinGet:

1
winget install schollz.croc

También puedes elegir Scoop o Chocolatey:

1
scoop install croc
1
choco install croc

Verifique la versión una vez completada la instalación:

1
croc --version

MacOS

El usuario de Homebrew ejecuta:

1
brew install croc

Usando MacPorts:

1
2
sudo port selfupdate
sudo port install croc

Linux

Arco Linux:

1
sudo pacman -S croc

Fedora:

1
sudo dnf install croc

Si el repositorio de versiones no tiene una versión adecuada, puede descargar el archivo correspondiente de las versiones oficiales o utilizar el script de instalación oficial:

1
curl https://getcroc.schollz.com | bash

Se recomienda descargar y revisar el contenido antes de ejecutar scripts remotos en dispositivos de producción. Cuando Go 1.22 o superior ya está instalado, también puedes instalarlo desde la fuente:

1
go install github.com/schollz/croc/v10@latest

Enviar archivos, directorios y múltiples elementos

Enviar un archivo:

1
croc send backup.tar.zst

Enviar el directorio completo:

1
croc send project-assets

Envíe varios archivos y directorios a la vez:

1
croc send notes.md photo.jpg logs config

Al enviar el directorio del proyecto, puede excluir dependencias innecesarias y entornos virtuales:

1
croc send --exclude "node_modules,.venv,.git" my-project

--exclude Recibe nombres separados por comas. Es mejor confirmar el rango de exclusión antes de realizar la transferencia para evitar enviar juntos archivos clave, archivos de variables de entorno, cachés y directorios de dependencia grandes.

Personalizar frase de recepción

La frase aleatoria predeterminada es adecuada para la mayoría de situaciones. Si necesita comunicarse por teléfono, etc., puede especificar una frase de al menos seis caracteres:

1
croc send --code correct-horse-27 report.zip

La frase personalizada debe ser bastante difícil de adivinar. No utilice nombres de proyectos, números de teléfono, fechas ni contraseñas débiles como 123456. Las frases sólo deben entregarse al destinatario previsto y no reutilizarse en otros documentos después de la transmisión.

Los receptores de Linux y macOS recomiendan usar esto:

1
CROC_SECRET=correct-horse-27 croc

En un sistema monousuario confiable, el comportamiento de tomar frases directamente como parámetros se puede restaurar de la forma clásica:

1
croc --classic

El método clásico es más conveniente, pero la contraseña puede quedar expuesta a otros procesos o herramientas de monitoreo en la máquina a través de parámetros de proceso. Esta configuración no se recomienda para servidores compartidos por varias personas.

Envía texto, usa canalizaciones y códigos QR

Enviar texto breve o URL:

1
croc send --text "https://example.com/download"

Enviar contenido desde la entrada estándar:

1
cat result.json | croc send

Escriba directamente en el archivo después de recibir:

1
croc --yes example-code-phrase > result.json

Al realizar el envío al teléfono móvil, podrá hacer que el terminal muestre el código QR:

1
croc send --qr photo.jpg

El código QR también contiene la información necesaria para unirse a la transmisión y no debe mostrarse en transmisiones públicas en vivo, capturas de pantalla o grabaciones.

Cómo utilizar la transferencia de currículum de punto de interrupción

croc apoya la reanudación de las transferencias interrumpidas. Después de desconectar la red, conserve el archivo original en el remitente y algunos archivos escritos por el receptor, y luego vuelva a ejecutar el proceso de transferencia. Cuando hay cambios significativos en la ruta de recepción, el contenido del archivo o las condiciones de retransmisión, es posible que la recuperación no funcione como se esperaba.

Preste atención a tres puntos durante la operación real:

  1. No elimine ni cambie el nombre de los archivos inacabados en el extremo receptor;
  2. No modifique el archivo fuente de envío antes de la recuperación;
  3. Confirme que el espacio restante en el disco sea suficiente para acomodar el archivo completo.

Si la recuperación falla repetidamente, primero use un archivo pequeño para probar la conectividad entre ambos extremos y el relé, y luego verifique si las versiones son demasiado diferentes, si el proxy es estable y si el software de seguridad intercepta la conexión.

Transferencia a través del proxy SOCKS5

croc puede especificar un proxy SOCKS5. Por ejemplo, el agente nativo escucha 127.0.0.1:9050:

1
croc --socks5 "127.0.0.1:9050" send backup.tar.zst

Los proxies afectan las rutas y velocidades de conexión, pero no reemplazan el cifrado de croc en sí. Si el extremo receptor también necesita un proxy depende de su entorno de red. Al solucionar problemas, debe verificar por separado si se puede acceder al puerto proxy, el método de procesamiento DNS y la dirección de retransmisión.

Relé de cocodrilo de construcción propia

La forma más sencilla es ejecutarlo directamente en el servidor:

1
croc relay

De forma predeterminada, se utiliza el puerto TCP 9009-9013. Proporcione al menos dos puertos cuando se requiera personalización:

1
croc relay --ports 1111,1112

El remitente especifica un relé de construcción propia:

1
croc --relay "relay.example.com:9009" send report.zip

Utilice Docker y establezca una contraseña para la retransmisión:

1
2
3
4
5
6
docker run -d \
  --name croc-relay \
  --restart unless-stopped \
  -p 9009-9013:9009-9013 \
  -e CROC_PASS='CHANGE_THIS_PASSWORD' \
  docker.io/schollz/croc

Proporcione la dirección de retransmisión y la contraseña al enviar:

1
2
3
croc --pass CHANGE_THIS_PASSWORD \
  --relay "relay.example.com:9009" \
  send report.zip

Antes de la implementación, debe liberar los puertos TCP reales en el firewall de la nube y el firewall del host. La contraseña de retransmisión no debe escribirse directamente en un script compartido, historial de shell o archivo de redacción público; es más apropiado inyectarlo desde una variable de entorno controlada o un sistema de gestión de claves.

Un repetidor de construcción propia puede controlar la ubicación del repetidor, la política de acceso y la disponibilidad, pero no puede reemplazar la seguridad de los terminales. Cuando en el extremo emisor se implantan programas maliciosos, los permisos del directorio receptor son incorrectos o se filtra la frase, los servidores autoconstruidos no pueden resolver estos problemas.

Parámetros que requieren precaución al automatizar

El siguiente comando omite la confirmación y permite sobrescribir archivos con el mismo nombre:

1
croc --yes --overwrite example-code-phrase

Es adecuado para tareas automatizadas que están claramente controladas y no es adecuado para ejecutarlas de manera casual en directorios que no son de confianza. El mensaje de confirmación predeterminado puede ayudar a detectar anomalías en el nombre, el tamaño o el origen del archivo. No habilite --yes y --overwrite a menos que el script haya verificado de forma independiente el objetivo receptor.

El envío silencioso se puede realizar usando:

1
croc --quiet send report.zip

El modo silencioso reduce la salida del registro y puede enmascarar la causa del error. El código de salida debe verificarse al mismo tiempo en la tarea programada y la salida del error debe escribirse en el registro protegido.

Solución de problemas comunes

Después de ingresar frases en ambos extremos, la conexión no ha podido ocurrir.

Primero confirme si la versión de croc, la hora del sistema y el acceso a la red en ambos extremos son normales, y luego verifique si el firewall, proxy u operador de la empresa bloquea el puerto de retransmisión. Puedes volver a intentarlo con un archivo pequeño para determinar si el problema proviene de la conexión o del archivo en sí.

Ejecutar croc 短语 directamente en Linux o macOS no cumple con las expectativas

La nueva versión recomienda poner la frase en CROC_SECRET:

1
CROC_SECRET=example-code-phrase croc

Esto es para reducir el riesgo de que la frase se filtre a través del nombre del proceso, no del error de instalación.

Ya existe un archivo con el mismo nombre en el extremo receptor

Priorice mantener el mensaje de confirmación y verifique la fuente antes de decidir si sobrescribirla. --yes --overwrite solo se considera si el script ha verificado la identidad del archivo y la ruta de destino.

El relé de construcción propia se puede conectar pero no puede transmitir

Verifique que todo el rango de puertos esté asignado y liberado, no solo el primer puerto. El relé predeterminado utiliza 9009-9013; Al personalizar el alcance, la asignación de Docker, el firewall del host, el grupo de seguridad de la nube y los parámetros de inicio de Croc deben ser consistentes.

¿Para qué escenarios es adecuado el cocodrilo?

croc es muy adecuado para transferir archivos temporalmente entre plataformas, ayudar de forma remota a los usuarios a exportar registros, transferir productos compilados entre dispositivos sin cuentas SSH y migrar directorios de computadoras antiguas a computadoras nuevas. No requiere que ambas partes registren cuentas, ni requiere que el extremo receptor abra un puerto de entrada.

Si se requiere sincronización a largo plazo, historial de versiones, gestión de derechos de equipo o copias de seguridad a gran escala, Syncthing, almacenamiento de objetos, rsync o un sistema de copia de seguridad dedicado suelen ser más adecuados. croc está posicionado para simplificar transferencias únicas o de corto plazo, no para reemplazar una solución completa de administración de datos.

Resumen

croc comprime la transferencia de archivos entre redes en tres pasos: “enviar archivo, compartir frase, recibir confirmación”, al tiempo que conserva el cifrado de extremo a extremo, multiplataforma, reanudación de puntos de interrupción y capacidades de retransmisión autoconstruidas. Simplemente use el relé público predeterminado para uso diario; Las redes sensibles o controladas pueden implementar sus propios relés pero aún así proteger las frases de recepción, el historial de los terminales, los permisos de archivos y los dispositivos de los terminales.

Dirección del proyecto: schollz/croc