HN 日本語サマリー

← 一覧へ戻る
プログラミング

Croc: 2台のコンピュータ間で安全にファイルやフォルダを転送する

Croc: Securely transfer files and folders between two computers (github.com)

27 pointsby gregsadetsky14 コメント

要約

Crocは、コマンドラインインターフェース(CLI)を使用して、任意の2台のコンピュータ間でファイルやフォルダを安全かつ簡単に転送できるツールです。エンドツーエンド暗号化、クロスプラットフォーム対応、中断した転送の再開機能などを備えており、ローカルサーバーやポートフォワーディングなしで利用できます。インストール方法や詳細な使用方法、リレーサーバーの自己ホストについても解説されています。

全文翻訳

このプロジェクトの将来はコミュニティのサポートにかかっています。今すぐスポンサーになりましょう。 Crocについて Crocは、任意の2台のコンピュータ間でファイルやフォルダをシンプルかつ安全に転送できるツールです。私の知る限り、Crocは以下のすべてを行う唯一のCLIファイル転送ツールです。 リレーを使用して任意の2台のコンピュータ間でデータを転送できる エンドツーエンド暗号化(PAKEを使用)を提供する 簡単なクロスプラットフォーム転送(Windows、Linux、Mac)を可能にする 複数のファイル転送を許可する 中断された転送を再開できる ローカルサーバーやポートフォワーディングが不要 IPv6優先でIPv4フォールバックに対応 Torのようなプロキシを使用できる Crocの詳細については、私のブログ記事をご覧いただくか、最近行ったインタビューをお読みください。 インストール お使いのシステム用の最新リリースをダウンロードするか、コマンドラインからリリースをインストールできます。 curl https://getcroc.schollz.com | bash macOS Homebrewを使用: brew install croc MacPortsを使用: sudo port selfupdate sudo port install croc Windows Scoop、Chocolatey、またはWingetで最新リリースをインストールできます。 scoop install croc choco install croc winget install schollz.croc nix-envを使用 Nixで最新リリースをインストールできます。 nix-env -i croc NixOS これをconfiguration.nixに追加できます。 environment.systemPackages = [ pkgs.croc ]; Alpine Linux まず、依存関係をインストールします。 apk add bash coreutils wget -qO- https://getcroc.schollz.com | bash Arch Linux pacmanでインストールします。 pacman -S croc Fedora dnfでインストールします。 dnf install croc Gentoo portageでインストールします。 emerge net-misc/croc Termux pkgでインストールします。 pkg install croc FreeBSD pkgでインストールします。 pkg install croc Linux、macOS、Windows(Conda経由) pixiでグローバルにconda-forgeからインストールできます。 pixi global install croc またはcondaで特定の環境にインストールします。 conda install --channel conda-forge croc Linux、macOS(Docker経由) 以下のワンライナー関数を~/.profileに追加します(任意のPOSIX準拠シェルで動作します)。 croc() { [ $# -eq 0 ] && set -- ""; mkdir -p "$HOME/.config/croc"; docker run --rm -it --user "$(id -u):$(id -g)" -v "$(pwd):/c" -v "$HOME/.config/croc:/.config/croc" -w /c -e CROC_SECRET docker.io/schollz/croc "$@"; } 現在のセッションでは、単にターミナルに貼り付けることもできます。初回実行時にDockerはイメージをプルします。Docker経由のCrocは、現在のディレクトリとそのサブディレクトリ内でのみ機能します。 ソースからビルド 希望する場合は、Goをインストールしてソースからビルドできます(Go 1.22+が必要です)。 go install github.com/schollz/croc/v10@latest Android サードパーティ製のF-Droidアプリが利用可能です。 使用方法 ファイルを送信するには、次のようにします。 $ croc send [ファイル(複数可)またはフォルダ] 'file-or-folder'(X MB)を送信中 コードは: code-phrase 次に、別のコンピュータでファイル(またはフォルダ)を受信するには、次を実行します。 croc code-phrase コードフレーズは、パスワード認証鍵合意(PAKE)を確立するために使用され、送信者と受信者がエンドツーエンド暗号化に使用する秘密鍵を生成します。 カスタマイズとオプション LinuxまたはmacOSでCrocを使用する LinuxおよびmacOSでは、プロセス名による秘密情報の漏洩を避けるため、送信および受信プロセスが若干異なります。秘密鍵を環境変数としてCrocを実行する必要があります。たとえば、秘密鍵***で受信するには次のようにします。 CROC_SECRET=*** croc シングルユーザーシステムでは、次のコマンドを実行することでデフォルトの動作を永続的に有効にできます。 croc --classic カスタムコードフレーズ 独自のコードフレーズ(6文字以上)で送信できます。 croc send --code [コードフレーズ] [ファイル(複数可)またはフォルダ] プロンプトなしの上書きを許可する ファイルをプロンプトなしで自動的に上書きするには、--overwriteフラグを使用します。 croc --yes --overwrite <code> フォルダの除外 送信からフォルダを除外するには、コンマ区切りの除外リストとともに--excludeフラグを使用します。 croc send --exclude "node_modules,.venv" [フォルダ] パイプの使用 - stdinとstdout Crocにパイプできます。 cat [ファイル名] | croc send ファイルを受信トレイにパイプするには、次を使用できます。 croc --yes [コードフレーズ] > out テキストの送信 URLや短いテキストを送信するには、次を使用します。 croc send --text "hello world" 複数のファイルの送信 ファイルおよび/またはフォルダを直接リストすることで、複数のファイルを送信できます。 croc send [ファイル1] [ファイル2] [ファイル3] [フォルダ1] [フォルダ2] QRコードの表示 QRコード(モバイルデバイス用)を表示するには、次を使用します。 croc send --qr [ファイル(複数可)またはフォルダ] プロキシの使用 --socks5を追加することで、プロキシ経由でファイルを送信できます。 croc --socks5 "127.0.0.1:9050" send SOMEFILE 暗号化曲線(Encryption Curve)の変更 暗号化に使用する楕円曲線を選択するには、--curveフラグを使用します。 croc --curve p521 <コードフレーズ> ハッシュアルゴリズムの変更 より高速なハッシュ処理のために、imohashアルゴリズムを使用します。 croc send --hash imohash SOMEFILE クリップボードオプション デフォルトでは、コードフレーズはクリップボードにコピーされます。これを無効にするには、次のようにします。 croc --disable-clipboard send [ファイル名] (Linux/macOSで役立つ)秘密鍵を環境変数として含む完全なコマンドをコピーするには、次を使用します。 croc --extended-clipboard send [ファイル名] これは、CROC_SECRET="code-phrase" croc(リレー/パスフラグを含む)のような完全なコマンドをコピーします。 静寂モード(Quiet Mode) すべての出力を抑制するには(スクリプトや自動化に便利)、次を使用します。 croc --quiet send [ファイル名] リレーサーバーの自己ホスト 独自の(リレー)サーバーを実行できます。 croc relay デフォルトでは、TCPポート9009-9013を使用します。ポートをカスタマイズできます(例: croc relay --ports 1111,1112)。ただし、少なくとも2つのポートが必要です。リレーを使用してファイルを送信するには、次のようにします。 croc --relay "myrelay.example.com:9009" send [ファイル名] リレーサーバーの自己ホスト(Docker経由) Dockerを使用してリレーを実行することもできます。 docker run -d -p 9009-9013:9009-9013 -e CROC_PASS='YOURPASSWORD' docker.io/schollz/croc カスタムリレーを使用してファイルを送信するには、次のようにします。 croc --pass YOURPASSWORD --relay "myreal.example.com:9009" send [ファイル名] カスタムポートを使用するには、CROC_PORTS(カンマ区切り)またはCROC_PORT(ベースポート)を設定します。 docker run -d -p 9010-9011:9010-9011 -e CROC_PORTS='9010,9011' -e CROC_PASS='YOURPASSWORD' docker.io/schollz/croc 謝辞 Crocは多くのイテレーションを経て進化してきました。貢献に感謝します! 特に以下の方々に感謝します。 @warner アイデア提供 @tscholl2 暗号化gist @skorokithakis 2つの接続のプロキシ その他多数!