croc ファイル転送チュートリアル: クロスプラットフォームの暗号化送信、ブレークポイントの再開、および自己構築リレー

Windows、Linux、macOS の間で暗号化されたファイルを転送する croc の方法を紹介します。これには、インストール、パスワードの受信、ディレクトリとテキストの転送、ブレークポイントの再開転送、プロキシと自己構築リレーが含まれます。

大きなファイルを Windows から Linux に一時的に転送するには、一般的なソリューションでは、クラウド ディスクへのログイン、SSH の構成、ポートのオープン、または一時的な HTTP サービスのセットアップのいずれかが必要です。 croc は、プロセスをコマンドとフレーズの送信に短縮します。つまり、両端がリレーを介して接続を確立し、PAKE を使用してエンドツーエンド暗号化用のキーを取得します。

Windows、Linux、macOS でサポートされている croc は、単一のファイル、複数のファイル、ディレクトリ、または短いテキストを送信したり、中断された転送を続行したりできます。デフォルトのパブリックリレーは一時的な使用に適しています。ネットワーク境界、可用性、または接続ログに関してより厳しい要件がある場合は、独自のリレーを実行することもできます。

簡単な答え

送信者は次を実行します。

1
croc send report.zip

端末には、example-code-phrase のような受信フレーズが表示されます。 Windows レシーバーは直接実行されます。

1
croc example-code-phrase

Linux および macOS に対する現在の推奨事項は、プロセス名にパスワードが表示されるのを避けるために、環境変数を介してパスワードを渡すことです。

1
CROC_SECRET=example-code-phrase croc

送信者、ファイル名、サイズが正しいことを確認して転送を受け入れます。受信フレーズをグループ チャット、チケット、または公開ログに投稿しないでください。そのフレーズを受け取った人は、送信に参加しようとするかもしれません。

croc がポート転送を必要としない理由

デフォルトでは、croc は送信者と受信者の両方がリレーにアクティブに接続することを許可します。したがって、2 つのデバイスが異なる NAT またはファイアウォールの背後にある場合でも、通常はパブリック IP アドレス、受信ポート、またはローカル サーバーを構成する必要はありません。

リレーは、両端がお互いを見つけてデータを転送するのを支援する責任があります。ファイルの内容は、送信者と受信者が PAKE (パスワード認証鍵協定、パスワード認証鍵協定) を通じて生成した鍵によってエンドツーエンドで暗号化されます。リレーは接続の問題を解決し、フレーズは双方が共有する暗号化されたセッションの確立に参加します。

これは、パスワードのセキュリティを無視してよいという意味ではありません。自動生成されたフレーズは、信頼できるチャネルを通じて受信者に配信される必要があり、送信前にファイル情報が検証される必要があります。機密性の高い環境では、リレーに表示される接続メタデータ、端末履歴、クリップボード、受信ディレクトリのアクセス許可も評価する必要があります。

croc をインストールする

ウィンドウ

WinGet を使用します。

1
winget install schollz.croc

スクープまたはチョコレートを選択することもできます。

1
scoop install croc
1
choco install croc

インストールが完了したら、バージョンを確認します。

1
croc --version

macOS

Homebrew ユーザーは次を実行します。

1
brew install croc

MacPort の使用:

1
2
sudo port selfupdate
sudo port install croc

リナックス

アーチ Linux:

1
sudo pacman -S croc

フェドーラ:

1
sudo dnf install croc

リリース リポジトリに適切なバージョンがない場合は、公式リリースから対応するファイルをダウンロードするか、公式インストール スクリプトを使用できます。

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

運用デバイスでリモート スクリプトを実行する前に、コンテンツをダウンロードして確認することをお勧めします。 Go 1.22 以降がすでにインストールされている場合は、ソースからインストールすることもできます。

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

ファイル、ディレクトリ、および複数のアイテムを送信する

ファイルを送信します:

1
croc send backup.tar.zst

ディレクトリ全体を送信します。

1
croc send project-assets

複数のファイルとディレクトリを一度に送信します。

1
croc send notes.md photo.jpg logs config

プロジェクト ディレクトリを送信するときに、不要な依存関係と仮想環境を除外できます。

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

--exclude カンマ区切りの名前を受け取ります。キーファイル、環境変数ファイル、キャッシュ、大きな依存関係ディレクトリを一緒に送信しないように、転送前に除外範囲を確認することをお勧めします。

受信フレーズをカスタマイズする

デフォルトのランダムなフレーズは、ほとんどの状況に適しています。電話などで連絡する必要がある場合は、6 文字以上のフレーズを指定できます。

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

カスタムフレーズは推測するのが十分難しいものでなければなりません。プロジェクト名、電話番号、日付、または 123456 のような弱いパスワードは使用しないでください。フレーズは意図された受信者にのみ提供されるべきであり、送信後に他の文書で再利用されるべきではありません。

Linux および macOS の受信者は、これを使用することをお勧めします。

1
CROC_SECRET=correct-horse-27 croc

信頼できるシングルユーザー システムでは、フレーズをパラメータとして直接受け取る動作は、従来の方法で復元できます。

1
croc --classic

従来の方法の方が便利ですが、プロセス パラメータを通じてパスワードがマシン上の他のプロセスや監視ツールに公開される可能性があります。この設定は、複数の人が共有するサーバーには推奨されません。

テキストを送信し、パイプと QR コードを使用する

短いテキストまたは URL を送信します。

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

標準入力からコンテンツを送信します。

1
cat result.json | croc send

受信後、ファイルに直接書き込みます。

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

携帯電話に送信する場合、端末に QR コードを表示させることができます。

1
croc send --qr photo.jpg

QR コードには、送信に参加するために必要な情報も含まれており、公開ライブ ストリーム、スクリーンショット、または録画に表示しないでください。

ブレークポイントを使用して転送を再開する方法

croc は、中断された転送の再開をサポートしています。ネットワークが切断された後、送信側の元のファイルと受信側が書き込んだいくつかのファイルを保持してから、転送プロセスを再実行します。受信パス、ファイル内容、中継条件に大幅な変更があった場合、リカバリが期待通りに動作しない場合があります。

実際の運用では以下の3点に注意してください。

  1. 受信側で未完成のファイルを削除したり名前を変更したりしないでください。
  2. リカバリ前に送信元ファイルを変更しないでください。
  3. ディスク上の残りのスペースがファイル全体を格納するのに十分であることを確認します。

回復が繰り返し失敗する場合は、まず小さなファイルを使用して両端とリレーの間の接続をテストし、次にバージョンがあまりにも異なっていないか、プロキシが安定しているかどうか、セキュリティ ソフトウェアが接続を遮断していないかどうかを確認します。

SOCKS5 プロキシ経由で転送

croc は SOCKS5 プロキシを指定できます。たとえば、ネイティブ エージェントは 127.0.0.1:9050 をリッスンします。

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

プロキシは接続パスと速度に影響しますが、croc 自体の暗号化を置き換えるものではありません。受信側にもプロキシが必要かどうかは、そのネットワーク環境によって異なります。トラブルシューティングを行う場合は、プロキシ ポート、DNS 処理方法、およびリレー アドレスが到達可能かどうかを個別に確認する必要があります。

自作クロックリレー

最も簡単な方法は、サーバー上で直接実行することです。

1
croc relay

デフォルトでは、TCP ポート 9009-9013 が使用されます。カスタマイズが必要な場合は、少なくとも 2 つのポートを提供します。

1
croc relay --ports 1111,1112

送信者は、独自に構築したリレーを指定します。

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

Docker を使用してリレーのパスワードを設定します。

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

送信時にリレー アドレスとパスワードを指定します。

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

導入前に、クラウド ファイアウォールとホスト ファイアウォールで実際の TCP ポートを解放する必要があります。リレー パスワードは、共有スクリプト、シェル履歴、またはパブリック Compose ファイルに直接書き込むべきではありません。制御された環境変数またはキー管理システムからそれを注入する方が適切です。

自己構築リレーはリレーの場所、アクセス ポリシー、可用性を制御できますが、エンドポイントのセキュリティを置き換えることはできません。送信側に悪意のあるプログラムが埋め込まれたり、受信ディレクトリの権限が間違っていたり、フレーズが漏洩したりした場合、自作サーバーではこれらの問題を解決できません。

自動化する際に注意が必要なパラメータ

次のコマンドは確認をスキップし、同じ名前のファイルを上書きできるようにします。

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

これは、明確に制御された自動タスクに適していますが、信頼されていないディレクトリで気軽に実行するのには適していません。デフォルトの確認プロンプトは、ファイル名、サイズ、またはソースの異常を検出するのに役立ちます。スクリプトが受信ターゲットを個別に検証しない限り、--yes--overwrite の両方を有効にしないでください。

サイレント送信は次を使用して実行できます。

1
croc --quiet send report.zip

サイレント モードではログ出力が減少し、失敗の原因が隠蔽される可能性があります。スケジュールされたタスクで終了コードを同時にチェックし、エラー出力を保護されたログに書き込む必要があります。

一般的なトラブルシューティング

両端にフレーズを入力しても接続できなくなりました。

まず、クロックのバージョン、システム時刻、両端のネットワーク アクセスが正常であるかどうかを確認し、次に会社のファイアウォール、プロキシ、またはオペレータが中継ポートをブロックしていないかどうかを確認します。小さなファイルで再試行すると、問題の原因が接続にあるのか、ファイル自体にあるのかを判断できます。

Linux または macOS 上で croc 短语 を直接実行すると期待に応えられません

新しいバージョンでは、このフレーズを CROC_SECRET に入れることが推奨されています。

1
CROC_SECRET=example-code-phrase croc

これは、インストールの失敗ではなく、プロセス名を介してフレーズが漏洩するリスクを軽減するためです。

同じ名前のファイルが受信側にすでに存在します

確認プロンプトを維持することを優先し、上書きするかどうかを決定する前にソースを確認してください。 --yes --overwrite は、スクリプトがファイル ID とターゲット パスを検証した場合にのみ考慮されます。

自作リレーは接続できるが送信できない

最初のポートだけでなく、ポート範囲全体がマッピングされ、解放されていることを確認します。デフォルトのリレーは 9009-9013 を使用します。スコープをカスタマイズする場合、Docker マッピング、ホスト ファイアウォール、クラウド セキュリティ グループ、および croc 起動パラメータが一貫している必要があります。

ワニはどのシナリオに適していますか?

croc は、プラットフォーム間でファイルを一時的に転送したり、ユーザーがログをエクスポートするのをリモートで支援したり、SSH アカウントを持たないデバイス間でビルド製品を転送したり、古いコンピュータから新しいコンピュータにディレクトリを移行したりするのに非常に適しています。双方がアカウントを登録する必要はなく、受信側が受信ポートを開く必要もありません。

長期的な同期、バージョン履歴、チーム権限管理、または大規模なバックアップが必要な場合は、Syncthing、オブジェクト ストレージ、rsync、または専用のバックアップ システムが適していることがよくあります。 croc は、完全なデータ管理ソリューションを置き換えるものではなく、1 回限りの転送または短期間の転送を簡素化することを目的としています。

概要

croc は、クロスネットワーク ファイル転送を「ファイルの送信、フレーズの共有、確認の受信」の 3 つのステップに圧縮し、エンドツーエンドの暗号化、クロスプラットフォーム、ブレークポイント再開、および自己構築リレー機能を維持します。日常的に使用する場合は、デフォルトのパブリックリレーを使用してください。機密性の高いネットワークまたは制御されたネットワークは独自のリレーを展開できますが、受信フレーズ、エンドポイント履歴、ファイル権限、およびエンドポイント デバイスは引き続き保護されます。

プロジェクトアドレス: schollz/croc