Dieses Projekt wird von Github -Sponsoren unterstützt.
croc
ist ein Tool, mit dem zwei Computer einfach und sicher Dateien und Ordner übertragen und sicher übertragen werden können. Afaik, Croc ist das einzige CLI-Dateitransfer-Tool, das alle folgenden Aussagen ausführt:
Ermöglicht zwei beliebige Computer, Daten zu übertragen (unter Verwendung eines Relais)
Bietet eine End-to-End-Verschlüsselung (mit Pake)
Ermöglicht einfache plattformübergreifende Transfers (Windows, Linux, Mac)
Ermöglicht mehrere Dateiübertragungen
Ermöglicht die Aufnahme von Transfers, die unterbrochen werden
Lokaler Server oder Portwartung nicht benötigt
IPv6-First mit IPv4 Fallback
kann Proxy wie Tor verwenden
Weitere Informationen zu croc
finden Sie in meinem Blog -Beitrag oder lesen Sie ein aktuelles Interview, das ich geführt habe.
Laden Sie die neueste Version für Ihr System herunter oder installieren Sie eine Version aus der Befehlszeile:
curl https://getcroc.schollz.com | bash
Auf macOS können Sie die neueste Version mit Homebrew installieren:
brew install croc
Auf macOS können Sie auch die neueste Version mit Macports installieren:
sudo port selfupdate sudo port install croc
Unter Windows können Sie die neueste Version mit Scoop, Chocolatey oder Winget installieren:
scoop install croc
choco install croc
winget install schollz.croc
Auf Unix können Sie die neueste Version mit NIX installieren:
nix-env -i croc
Unter Alpine Linux müssen Sie zuerst Abhängigkeiten installieren:
apk add bash coreutils wget -qO- https://getcroc.schollz.com | bash
Unter Arch Linux können Sie die neueste Version mit pacman
installieren:
pacman -S croc
Auf Fedora können Sie mit dnf
installieren:
dnf install croc
Auf Gentoo können Sie mit portage
installieren:
emerge net-misc/croc
Auf Terux können Sie mit pkg
installieren:
pkg install croc
Auf FreeBSD können Sie mit pkg
installieren:
pkg install croc
Unter Linux, MacOS und Windows können Sie mit pixi
weltweit bei Conda-Forge installieren:
pixi global install croc
oder in eine bestimmte Umgebung mit conda
:
conda install --channel conda-forge croc
Oder Sie können Go und erstellen Sie aus der Quelle (erfordert Go 1.17+):
go install github.com/schollz/croc/v10@latest
Auf Android gibt es eine F-Droid-App von Drittanbietern zum Herunterladen zur Verfügung.
Um eine Datei zu senden, tun Sie einfach:
$ croc send [file(s)-or-folder] Sending 'file-or-folder' (X MB) Code is: code-phrase
Dann können Sie einfach die Datei (oder den Ordner) auf einem anderen Computer empfangen
croc code-phrase
Der Code-Phrase wird verwendet, um die Kennwortvereinbarung (PAKE) für die Kennwortvereinbarung festzulegen, die einen geheimen Schlüssel für den Absender und den Empfänger für die End-to-End-Verschlüsselung generiert.
Es gibt eine Reihe konfigurierbarer Optionen (siehe --help
). Eine Reihe von Optionen (wie benutzerdefiniertes Relais, Ports und Codephrase) kann mit --remember
festgelegt werden.
croc
unter Linux oder Mac OS Unter Linux und Mac OS unterscheidet sich das Senden und Empfangen leicht, um zu vermeiden, dass das Geheimnis über den Prozessnamen ausgetragen wird. Auf diesen Systemen müssen Sie croc
mit dem Geheimnis als Umgebungsvariable ausführen. Zum Beispiel mit dem Geheimnis ***
:
CROC_SECRET=*** croc
Dies zeigt nur croc
in der Prozessliste eines Multi-User-Systems und läuft nicht das Geheimnis.
Für ein Einzelbenutzersystem kann das Standardverhalten durch Ausführen dauerhaft aktiviert werden
croc --classic
und bestätigen. Führen Sie diesen Befehl erneut aus, um den klassischen Modus zu deaktivieren.
Sie können mit Ihrer eigenen Code -Phrase senden (müssen mehr als 6 Zeichen sein).
croc send --code [code-phrase] [file(s)-or-folder]
Standardmäßig fordert CROC auf, eine Datei zu überschreiben. Sie können Dateien automatisch über das Flag --overwrite
(nur Empfänger) überschreiben. Empfangen Sie beispielsweise eine Datei, um automatisch zu überschreiben:
croc --yes --overwrite <code>
Sie können nach croc
übergehen:
cat [filename] | croc send
In diesem Fall wird croc
automatisch die STDIN-Daten verwendet und einen Dateinamen wie "Croc-Stdin-123456789" senden und zuweisen. Wenn Sie an stdout
erhalten werden, können Sie die Übertragung automatisch automatisch --yes
und nach stdout
leiten.
croc --yes [code-phrase] > out
Der andere in der Konsole gedruckte Text geht nach stderr
sodass er nicht die Nachricht stört, die an stdout
geht.
Manchmal möchten Sie URLs oder kurze Text senden. Zusätzlich zu Rohrleitungen können Sie problemlos Text mit croc
senden:
croc send --text "hello world"
Dadurch wird der Empfänger automatisch angewiesen, stdout
zu verwenden, wenn er den Text empfängt, damit er angezeigt wird.
Sie können einen Proxy als Ihre Verbindung zum Relais verwenden, indem Sie eine Proxy -Adresse mit --socks5
hinzufügen. Sie können beispielsweise über ein Tor -Staffel senden:
croc --socks5 "127.0.0.1:9050" send SOMEFILE
Sie können aus verschiedenen elliptischen Kurven auswählen, die für die Verschlüsselung verwendet werden können, indem Sie das Flag --curve
verwenden. Nur der Empfänger kann die Kurve auswählen. Empfangen Sie beispielsweise eine Datei mit der P-521-Kurve:
croc --curve p521 <codephrase>
Verfügbare Kurven sind P-256, P-348, P-521 und SIEC. P-256 ist die Standardkurve.
Sie können aus verschiedenen Hash -Algorithmen auswählen. Der Standard ist der xxhash
-Algorithmus, der schnell und gründlich ist. Wenn Sie für Geschwindigkeit optimieren möchten, können Sie den imohash
-Algorithmus verwenden, der noch schneller ist, aber da IT -Dateien (gegen das Lesen der gesamten Datei) fälschlicherweise bestimmen können, dass eine Datei für die beiden übertragenden Computer gleich ist - obwohl dies nur ist Ein Problem, wenn Sie Dateien synchronisieren und eine neue Datei an einen Computer senden.
croc send --hash imohash SOMEFILE
Das Relais wird benötigt, um die parallelen eingehenden und ausgehenden Verbindungen zu feiern. Standardmäßig verwendet croc
ein Öffentlichkeitsarbeit, aber Sie können auch Ihr eigenes Staffel ausführen:
croc relay
Standardmäßig verwendet es TCP-Ports 9009-9013. Stellen Sie sicher, dass Sie diese öffnen. Sie können die Ports (z. B. croc relay --ports 1111,1112
) anpassen, müssen jedoch mindestens 2 Ports für das Relais haben. Der erste Port ist für die Kommunikation dient und die nachfolgenden Ports werden für die Multiplex -Datenübertragung verwendet.
Sie können Dateien mit Ihrem Relais senden, indem Sie eingeben --relay
um das von Ihnen verwendete Relais zu ändern, wenn Sie Ihre eigenen benutzerdefinierten Hosts haben möchten.
croc --relay "myrelay.example.com:9009" send [filename]
Beachten Sie, dass Sie beim Senden nur den ersten Port (den Kommunikationsport) einbeziehen müssen. Die nachfolgenden Ports für die Datenübertragung werden aus dem Relais an den Benutzer übertragen.
Wenn es einfacher ist, können Sie auch ein Relais mit Docker ausführen:
docker run -d -p 9009-9013:9009-9013 -e CROC_PASS='YOURPASSWORD' schollz/croc
Stellen Sie sicher, dass das Passwort für das Relais eingeben, da sonst alle Anforderungen abgelehnt werden.
croc --pass YOURPASSWORD --relay "myreal.example.com:9009" send [filename]
HINWEIS: Wenn Sie --pass YOURPASSWORD
einfügen, können Sie stattdessen eine Datei mit dem Kennwort übergeben, z. B. --pass FILEWITHPASSWORD
.
MIT
croc
hat viele Iterationen durchgemacht, und ich bin beeindruckt von all den großartigen Beiträgen! Wenn Sie in irgendeiner Weise einen Beitrag leisten möchten, können Sie auf jeden Fall ein Problem, eine PR oder eine Frage stellen.
Vielen Dank an @Warner für die Idee, @tscholl2 für die Verschlüsselung GIST, @SKOROKITHAKIS für Code für zwei Verbindungen. Finally thanks for making pull requests @maximbaz, @meyermarcel, @Girbons, @techtide, @heymatthew, @Lunsford94, @lummie, @jesuiscamille, @threefjord, @marcossegovia, @csleong98, @afotescu, @callmefever, @El-JojA, @anatolyyyyyy, @goggle, @smileboywtu, @nicolashardy, @fbartels, @rkuprov, @hreese, @xenrox und IPAR!