これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド git-remote-gcrypt です。
プログラム:
NAME
git-remote-gcrypt - GNU Privacy Guard で暗号化された git リモート
DESCRIPTION
リモート ヘルパー プログラムは、ネットワーク トランスポートを処理するために git によって呼び出されます。 このヘルパーさん
ハンドル gcrypt:: GPG で暗号化されたリモート リポジトリにアクセスする URL。
カスタム形式。
サポートされている場所は次のとおりです ローカル, rsync:// & sftp://、リポジトリは
ファイルのセット、または代わりに任意の ここで、gcrypt は同じ表現を
git リポジトリ。任意の git トランスポートを介してブリッジされます。
目的は、機密の認証された Git ストレージとコラボレーションを提供することです。
典型的な信頼できないファイル ホストまたはサービス。 これをどの程度満たしているかを評価するためにご協力ください
デザイン目標!
注意:
これは開発バージョンです -- リポジトリ形式は変更される可能性があります。
クイックスタート
・ インストール git-リモート-gcrypt 提供されたものを実行することで インストール.sh スクリプト。
· 暗号化されたリモートをプッシュして作成します。
git リモート add cryptremote gcrypt::rsync://example.com:repo
git push 暗号リモート マスター
> gcrypt: 新しいリポジトリのセットアップ
> gcrypt: リモート ID は :id:7VigUnLVYVtZx8oir34R
> [さらに行..]
> gcrypt::[...]
> * [新しいブランチ] マスター -> マスター
CONFIGURATION
以下 git-config(1) 変数がサポートされています。
リモート。 .gcrypt-参加者
gcrypt.participants
GPG キー識別子のスペース区切りのリスト。 リモコンはこれらに対して暗号化されます
参加者のみが受け付けられます。 gpg -k すべてのパブリックをリストします
あなたが知っているキー。
このオプションが設定されていない場合、デフォルトのキーに暗号化され、有効なキーが受け入れられます。
サイン。 この動作は、参加者を設定することで明示的に要求することもできます。
〜へ シンプルな.
gcrypt-参加者 リモートでの設定はリポジトリよりも優先されます
変数 gcrypt.participants.
リモート。 .gcrypt-publish-participants
gcrypt.publish-participants
デフォルトでは、参加者の GPG キー ID は、次を使用して暗号化することで隠蔽されます。
gpg -R。 このオプションを次のように設定すると、 true そのセキュリティ対策を無効にします。
使用に関する問題 gpg -R 復号化するために、GPG は利用可能なシークレットをすべて試します
使用可能なキーが見つかるまで、順番にキーを押します。 これにより、不必要なパスフレーズが発生する可能性があります
プロンプト。
リモート。 .gcrypt-signingkey
ユーザーの署名キー
(後者は通常の git 構成のもの) 署名に使用するキー。 あなたがすべき
セッションに ユーザーの署名キー デフォルトの署名キーが参加者の一部ではない場合
リスト。 リモートごとのバージョンを使用すると、異なるリモートを使用して異なるリモートに署名できます。
キー。
ENVIRONMENT 変数
GCRYPT_FULL_REPACK
この環境変数は、プッシュ時に完全な再パックを強制します。
例
XNUMX 人の参加者用にリモートをセットアップする方法:
git リモート add cryptremote gcrypt::rsync://example.com:repo
git config remote.cryptremote.gcrypt-participants "KEY1 KEY2"
git push 暗号リモート マスター
git バックエンドの使用方法:
# ターゲットの git リポジトリがすでに存在している必要があることに注意してください。
# `next` ブランチは上書きされます!
git リモート add gitcrypt gcrypt::[メール保護]:レポ#次
git push gitcrypt マスター
URL フラグメント (#次 ここで) は、どのバックエンド ブランチが使用されるかを示します。
注意事項
コラボレーション
マニフェストの暗号化は、参加者と一致するようにプッシュごとに更新されます
構成。 各プッシュ ユーザーは、すべてのコラボレーターの公開鍵を持っている必要があります。
正しい参加者の構成。
依存関係
rsync & curl リモコン用 rsync: & SFTP: それぞれ。 主な実行可能ファイル
をサポートする POSIX 準拠のシェルが必要です。 ローカル.
GNU 個人情報保護 ガード
GPG 1.4 と 2 の両方がサポートされています。 個人の GPG キーが必要です。 GPG 構成
公開キー暗号化、対称暗号化、および
署名。 見る man gpg 。
リモート ID
リモート ID は秘密ではありません。 XNUMX つのリポジトリが
同一ユーザーであることを区別できます。 リモート ID が変更されると警告が表示されます。
これは、リモートが再作成された場合にのみ発生します。
倉庫 フォーマット
EncSign(X): GPG キー所有者に署名して暗号化する
暗号化(K,X): 対称キーアルゴリズムを使用して暗号化する
ハッシュ(X): SHA-2/256
B: 支店一覧
L: ハッシュのリスト (Hi) とキー (Ki) パックファイルごとに
R: リモートID
リポジトリを書き込むには:
各パックファイルを保存する P as 暗号化(Ki, P) → P' ファイル名に Hi
コラボレー Ki は新しいランダムな文字列であり、 ハッシュ(P') → Hi
オンラインショップ EncSign(B || L || R) マニフェストの中で
リポジトリを読み取るには:
GPG キーリングを使用してマニフェストを取得、復号化、検証 → (NS、 L, R)
警告する場合 R 以前に表示されたリモート ID と一致しません
それぞれ こんにちは、 Ki in L:
ファイルを取得 Hi サーバーから→ P'
確認します ハッシュ(P') マッチ Hi
解読する P' Ki → P オープンして P gitを使って
マニフェスト file
マニフェスト ファイルの例 (簡潔にするために省略記号を付けています):
$ gpg -d 91bd0c092128cf2e60e1a608c31e92caf1f9c1595f83f2890ef17c0e4881aa0a
542051c7cd152644e4995bda63cc3ddffd635958 refs/heads/next
3c9e76484c7596eff70b21cbe58408b2774bedad refs/heads/master
pack :SHA256:f2ad50316...cd4ba67092dc4 z8YoAnFpMlW...3PkI2mND49P1qm
pack :SHA256:a6e17bb4c...426492f379584 82+k2cbiUn7...dgXfyX6wXGpvVa
keep :SHA256:f2ad50316...cd4ba67092dc4 1
リポジトリ :id:OYiSleGirtLubEVqJpFF
各項目は改行まで拡張され、次のいずれかと一致します。
Git オブジェクト ID とその参照
パック : :
パックファイルのハッシュ (Hi) と対応する対称キー (Ki).
続ける : :
Packfile ハッシュとその再パック生成
レポ
リモートID
内線 ...
拡張フィールド。保存されていますが、使用されていません。
検出 GCクリプト 残り
git URL が gcrypt リポジトリであるかどうかを検出するには、次を使用します。 git-remote-gcrypt --check url Exit status if
リポジトリが存在し、復号化できる場合は 0、リポジトリが gcrypt を使用しているが復号化できなかった場合は 1
復号化された場合、リポジトリが gcrypt で暗号化されていない (またはアクセスできなかった) 場合は 100。
これは、リポジトリの内容をローカル git リポジトリにフェッチする必要があることに注意してください。
gcrypt リポジトリを使用するときに実行されます。
onworks.net サービスを使用してオンラインで git-remote-gcrypt を使用する