セキュリティとプライバシー · Clash 技術ブログ

Clash の設定ファイルはそのまま共有できるか:サブスクリプション、ノードのパスワード、secret を伏せる方法

完全な設定は通常、そのまま他人へ渡せません。サブスクリプションの token、ノードのパスワード、コントローラーの secret が含まれている場合があるためです。問題を調べる際は、最小限で読みやすく、機密情報を伏せたコピーを別に作成してください。

  • 設定から機密情報を除去する
  • YAML
  • secret
  • プライバシー
目次

設定エラーの相談では、ファイル全体を送るのが早く見えても、サブスクリプションやノードのパスワードまで渡してしまうことがあります。復元用の原本と相談用のコピーは分けて保存します。原本は完全な状態で暗号化し、相談用には同じエラーを再現できる構造と仮の値だけを残します。スクリーンショット、二次元コード、ログも併せて確認してください。

相談用ファイルで隠すべき情報は?

下の表に沿って設定、ログ、スクリーンショットを確認し、サブスクリプションの token、ノードのパスワード、コントローラーの secret、内部ネットワーク情報を隠します。相談用のコピーを別に保存し、手元で元の問題を再現できるか確認してください。原本のバックアップを直接書き換えず、次の節の保存方法を使います。

共有前に一項目ずつ探す

場所またはフィールド公開される可能性がある情報処理方法
サブスクリプション URL のクエリパラメーター設定全体を直接取得できる token完全な URL を削除し、ドメインとステータスコードだけを残す
proxies のノードserver、UUID、password、PSK、private-keyexample.com と REDACTED をプレースホルダーとして使用する
external-controller / secretローカルの制御アドレスと API キーフィールドの構造は維持し、実際の値を置き換える
ログとスクリーンショットAuthorization、Cookie、ユーザー名、QR コード無関係な画面を切り取り、もう一度全体を読む
LAN と会社のドメイン内部ネットワークのアドレス、ホスト名、構成問題の説明に必要な最小範囲だけを残す

元のバックアップは暗号化し、最小限の相談用コピーを別に作る

原本のバックアップには実際のサブスクリプション、ノード、ローカルの上書き設定を残し、自分で管理する暗号化ストレージにだけ保存します。トラブルの相談用コピーは新しいファイルから作り、問題の再現に必要な項目だけを追加してください。原本から項目を順に削除して作らないでください。長い URL、Provider header、スクリプトの引数などを見落としやすくなります。

バックアップのファイル名には、クライアント、カーネル、日付を含めることができます。例:verge-macos-2026-07-16-private.zip。圧縮ファイルは暗号化ではありません。クラウドストレージへ保存する場合は、プラットフォームのエンドツーエンド暗号化または暗号化アーカイブを使用し、共有権限を制限してください。

プレースホルダー値を使い、構造を理解できる最小限の設定を作成する

公開可能な構造の例
mixed-port: 7890
external-controller: 127.0.0.1:9090
secret: REDACTED

proxies:
  - name: test-node
    type: socks5
    server: example.com
    port: 1080
    username: REDACTED
    password: REDACTED

proxy-groups:
  - name: Test
    type: select
    proxies: [test-node, DIRECT]

rules:
  - DOMAIN,example.org,Test
  - MATCH,DIRECT

DNS の問題であれば、DNS、一つのテスト用ポリシーグループ、関連するルールだけを残します。YAML の解析エラーであれば、エラー行前後の階層を残します。プレースホルダーへ置き換えた後、ローカルで同じエラーを引き続き再現できることを確認してください。再現できなければ、他人が見る内容は元の問題と異なります。

送信前にテキスト検索を行い、人の目でもう一度確認する

まず共有するコピーのディレクトリへ移動します。最初のrgコマンドは、その中のファイルだけを検索します。続くGitコマンドは実際のGitリポジトリ内だけで実行してください。対象リポジトリのルートディレクトリへ移動し、path/to/config.yamlをリポジトリのルートから見た設定ファイルの実際の相対パスに変更します。

git diff --stagedでコミット予定の内容を、git log --allで各参照に含まれる関連履歴を確認します。コマンドのエラー、誤ったパス、該当コミットがないことは、認証情報が一度もリポジトリに入っていない証明にはなりません。Gitリポジトリではないコピーはテキストだけを確認し、履歴の削除が済んだとは扱わないでください。

コピー用ディレクトリで、一般的な機密フィールドを検索する
rg -n -i 'token|secret|password|passwd|uuid|private-key|authorization|cookie' .
git diff --staged
git log --all -- path/to/config.yaml

検索で確認できるのは一般的なフィールドだけで、カスタム header、QR コード、名前を変更した認証情報までは識別できません。検索結果を確認した後も、共有するファイルを一行ずつ読み、ターミナルのプロンプト、ブラウザのタブ、スクリーンショット内の通知を確認してください。

実際の設定をすでに送信した場合は、マスキングを続けるのではなく認証情報を変更する

元のファイルをグループチャット、サポート窓口、公開リポジトリに送ってしまった場合、機密情報を伏せた版を送り直しても、その後の悪用を減らせるだけで、古い認証情報は無効になりません。漏れた認証情報を変更し、古い値を使えなくしてください。

漏洩後に行うこと

漏洩した内容直ちに行う対処
完全なサブスクリプション URLサービスの管理画面で token/サブスクリプションアドレスをリセットし、各デバイスを更新する
external-controller secret新しい secret を生成し、制御ポートが信頼できないネットワークへ公開されていないことを確認する
ノードの認証情報サーバー管理者に、パスワード、UUID、PSK、秘密鍵を変更してもらう
Git の履歴まず漏えいした認証情報をすべて失効または変更し、必要に応じて履歴を整理します。最新のファイルを削除するだけでは不十分です。
公開されたログまたはスクリーンショット拡散を減らすために取り下げ、そこに漏れた実際の認証情報をすべて変更する

変更後は、未ログインのウィンドウから以前のサブスクリプションアドレスへアクセスするか、以前の secret で制御インターフェースへリクエストし、実際に無効になったことを確認してください。クライアント上の表示名を変更したことや、公開投稿を削除したことでは、この検証を代替できません。

設定、ログ、スクリーンショットを共有できる条件

送信できる条件

  • 最小限のコピーでも、ローカルで同じエラーを再現できる
  • すべての URL クエリパラメーター、ノード認証、secret を置き換えている
  • ログに Authorization、Cookie、ローカルのユーザー名、絶対パスがない
  • スクリーンショットに QR コード、アカウント、通知、無関係なタブがない
  • 元の完全なバックアップを公開リポジトリや共有リンクへ送ったことがない

参考資料