Menyiapkan repositori git terenkripsi

30

Situasi

Hai, saya ingin menyimpan data dengan git, terenkripsi (pada beberapa platform seperti bitbucket atau github ). Karena itu pertanyaannya:

Pertanyaan

Saya mencari cara bebas repot yang berbeda untuk:
Bagaimana cara mengatur repositori terenkripsi pada bitbucket (/ github)? Sekarang, saya baru git, jadi instruksi dengan semua langkah yang diperlukan atau langkah demi langkah akan sangat dihargai!

"Penelitian"

git-crypt
Saya menemukan git-crypt , tetapi di situs disebutkan bahwa itu dimaksudkan untuk enkripsi file tunggal. Jika seseorang ingin mengenkripsi seluruh repositori, mereka meneruskan ke git-remote-gcrypt .

git-remote-gcrypt
Dalam README.rst mereka membuatnya sesederhana

Mulai cepat

git remote add cryptremote gcrypt::rsync://example.com:repo
git push cryptremote master
> gcrypt: Setting up new repository
> gcrypt: Remote ID is :id:7VigUnLVYVtZx8oir34R
> [ more lines .. ]
> To gcrypt::[...]
> * [new branch]      master -> master

atau di bawah

Contohnya

# notice that the target git repo must already exist and its
# `next` branch will be overwritten!
git remote add gitcrypt gcrypt::[email protected]:repo#next
git push gitcrypt master

Mencoba

Saya lebih suka enkripsi repositori penuh, maka saya mencoba git-remote-gcryptdengan variasi Quickstart dan Contoh . Sejauh ini saya mencoba mendorong repositori yang ada dengan mengikuti instruksi mereka. Yang menghasilkan ini: (catatan: Saya sengaja mengubah nama pengguna menjadi user)

-> dengan sshseperti pada contoh yang diberikan

[...]/git_test$ git remote add origin gcrypt::[email protected]:user/test.git
[...]/git_test$ git push -u origin --allgcrypt: Development version -- Repository format MAY CHANGE
gcrypt: Repository not found: [email protected]:user/test.git
gcrypt: Setting up new repository
gcrypt: Remote ID is :id: ...
Zähle Objekte: 10, Fertig.
Komprimiere Objekte: 100% (6/6), Fertig.
Total 10 (delta 0), reused 0 (delta 0)
gcrypt: Encrypting to: --throw-keyids --default-recipient-self
gcrypt: Requesting manifest signature
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
error: Fehler beim Versenden einiger Referenzen nach 'gcrypt::[email protected]:user/test.git'

atau dengan https(yang berhasil)

[...]/git_test$ git remote add gitcrypt gcrypt::https://[email protected]/user/test.git
[...]/git_test$ git push -u gitcrypt --allgcrypt: Development version -- Repository format MAY CHANGE
Password for 'https://[email protected]': 
gcrypt: Repository not found: https://[email protected]/user/test.git
gcrypt: Setting up new repository
Password for 'https://[email protected]': 
gcrypt: Remote ID is :id: ...
Zähle Objekte: 10, Fertig.
Komprimiere Objekte: 100% (6/6), Fertig.
Total 10 (delta 0), reused 0 (delta 0)
gcrypt: Encrypting to: --throw-keyids --default-recipient-self
gcrypt: Requesting manifest signature
Password for 'https://[email protected]': 
To gcrypt::https://[email protected]/user/test.git
 * [new branch]      master -> master
Branch master konfiguriert zum Folgen von Remote-Branch master von gitcrypt.

Namun demikian, saya tidak mengerti bagaimana cara menambahkan pengguna atau bahkan hanya menarik cadangan saya ke komputer lain (karena kunci gpg saya dihasilkan secara lokal) !? Jangan ragu untuk hanya menjawab penggunaan git-remote-gcrypt.

gr4nt3d
sumber
Ini mungkin terkait: - superuser.com/questions/676497/... Tautan [filter] [3] yang disediakan membuat saya percaya bahwa ini adalah penggunaan rumit dari fungsionalitas git yang mengubah kode (/ konten) saat mendorong / menarik. Dan en-de-cryption dilakukan oleh skrip yang disediakan. Jika itu masalahnya, maka saya lebih suka cara yang lebih mudah untuk setup tanpa kerumitan skrip - program seperti git-remote-gcrypt. Apalagi ini akan mengungkapkan isi repositori, kan?
gr4nt3d
- superuser.com/questions/900656/… Pertanyaan serupa khususnya dengan bitbucket yang tidak memiliki jawaban.
gr4nt3d
@Nifle tampaknya menjadi metode filter seperti dalam komentar pertama saya, bukan? Apakah ini mengenkripsi seluruh repo atau hanya isi file?
gr4nt3d
1
Sudahkah Anda melihat git-remote-gcrypt atau Keybase ?
harrymc

Jawaban:

18

Alat gratis dan sumber terbuka adalah Keybase :

Git mendukung pembantu jarak jauh. Dan kami telah membuat sumber terbuka.

Pembantu jarak jauh Keybase melakukan semua crypto sambil membiarkan git melakukan tugasnya. Ini mungkin terdengar mengesankan, tetapi Keybase belum mengimplementasikan git dari awal. Kami menyediakan penolong jarak jauh, yang ditenagai oleh proyek go-git yang luar biasa, yang telah kami beri kontribusi.

Kami membahas: (1) crypto, (2) tim + manajemen kunci multi-perangkat, (3) konsep identitas yang lebih aman.

Ini dienkripsi ujung ke ujung. Itu dihosting, seperti, katakanlah, GitHub, tetapi hanya Anda (dan rekan tim) yang dapat mendekripsi semua itu. Bagi Keybase, semuanya hanyalah kekacauan yang kacau. Bagi Anda, ini adalah checkout rutin tanpa langkah tambahan.

Bahkan nama repositori dan nama cabang Anda dienkripsi, dan karenanya tidak dapat dibaca oleh staf Keybase atau penyusup.

Kerja Tim didukung melalui Tim Keybase :

Tim Keybase adalah sekelompok orang yang diberi nama, dengan keanggotaan fleksibel. Katakanlah Anda mengerjakan proyek bernama Treehouse. Anda dapat mendaftarkan treehouse di Keybase. Nama tim ini bersifat universal; hanya ada satu tim Keybase dengan nama yang diberikan.

Tim mendapat obrolan dan saluran. Obrolan terlihat agak seperti Slack atau Discord:

Tapi kerja tim Keybase dienkripsi ujung ke ujung, yang berarti Anda tidak perlu khawatir tentang peretasan server.

Keybase

harrymc
sumber
2
Alat yang bagus di sana! Namun, tampaknya ini adalah ekosistem tertutup. Saya tidak dapat menemukan petunjuk yang menunjukkan cara bekerja dengan pengguna non-Keybase. Apakah ini mungkin? Saya kira memaksa seluruh tim untuk menggunakan alat ini atau bergantung padanya lebih banyak daripada manfaatnya.
gr4nt3d
Ini adalah open-source. Apakah alat yang Anda kembangkan akan lebih terbuka?
harrymc
Saya mengacu pada penggunaannya; dan saya tidak yakin bagaimana git help remote sebenarnya bekerja. Bisakah seseorang menggunakan kunci (yang bukan pgp, tetapi sesuatu yang baru, bukan?) Dan penolong ini tetapi tanpa gui?
gr4nt3d
Saya tidak bisa menjawab pertanyaan-pertanyaan ini - saya belum membahasnya dengan mendalam.
harrymc
dapatkah alat pihak ketiga bekerja dengannya?
Mikey