การตั้งค่า git-repository ที่เข้ารหัส


30

สถานการณ์

สวัสดีฉันต้องการบันทึกข้อมูลด้วย git เข้ารหัส (ในบางแพลตฟอร์มเช่นbitbucketหรือgithub ) ดังนั้นคำถาม:

คำถาม

ฉันกำลังมองหาวิธีที่ไม่ยุ่งยากหลายวิธีใน:
วิธีการตั้งค่าพื้นที่เก็บข้อมูลที่เข้ารหัสบน bitbucket (/ github)? ตอนนี้ฉันยังใหม่กับคอมไพล์ดังนั้นการเรียนการสอนด้วยขั้นตอนที่จำเป็นทั้งหมดหรือทีละขั้นตอนจะได้รับการชื่นชมมาก!

"วิจัย"

git-crypt
ฉันพบgit-cryptแต่บนเว็บไซต์มีการกล่าวถึงว่ามันมีไว้สำหรับการเข้ารหัสไฟล์เดียว ถ้าใครอยากจะเข้ารหัสพื้นที่เก็บข้อมูลทั้งหมดที่พวกเขาหวังที่จะคอมไพล์ระยะไกล-gcrypt

git-remote-gcrypt
ในREADME.rstพวกเขาวางมันง่าย ๆ

Quickstart

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

หรือต่ำกว่า

ตัวอย่าง

# notice that the target git repo must already exist and its
# `next` branch will be overwritten!
git remote add gitcrypt gcrypt::git@example.com:repo#next
git push gitcrypt master

พยายาม

ฉันชอบการเข้ารหัสที่เก็บแบบเต็มดังนั้นฉันจึงลองgit-remote-gcryptกับQuickstartและตัวอย่างที่หลากหลาย จนถึงตอนนี้ฉันพยายามผลักดันที่เก็บข้อมูลที่มีอยู่โดยทำตามคำแนะนำของพวกเขา ซึ่งให้ผลลัพธ์นี้: (หมายเหตุ: ฉันได้เปลี่ยนชื่อผู้ใช้เป็นเจตนาuser)

-> พร้อมด้วยsshในตัวอย่างที่ให้ไว้

[...]/git_test$ git remote add origin gcrypt::git@bitbucket.org:user/test.git
[...]/git_test$ git push -u origin --allgcrypt: Development version -- Repository format MAY CHANGE
gcrypt: Repository not found: git@bitbucket.org: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::git@bitbucket.org:user/test.git'

หรือกับhttps(ซึ่งใช้งานได้)

[...]/git_test$ git remote add gitcrypt gcrypt::https://user@bitbucket.org/user/test.git
[...]/git_test$ git push -u gitcrypt --allgcrypt: Development version -- Repository format MAY CHANGE
Password for 'https://user@bitbucket.org': 
gcrypt: Repository not found: https://user@bitbucket.org/user/test.git
gcrypt: Setting up new repository
Password for 'https://user@bitbucket.org': 
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://user@bitbucket.org': 
To gcrypt::https://user@bitbucket.org/user/test.git
 * [new branch]      master -> master
Branch master konfiguriert zum Folgen von Remote-Branch master von gitcrypt.

อย่างไรก็ตามฉันไม่เข้าใจวิธีการเพิ่มผู้ใช้หรือเพียงแค่ดึงการสำรองข้อมูลของฉันไปยังเครื่องอื่น (เนื่องจากคีย์ gpg ของฉันถูกสร้างขึ้นในเครื่อง)! git-remote-gcryptรู้สึกอิสระที่จะเพียงแค่ตอบเกี่ยวกับการใช้งานของ


สิ่งเหล่านี้อาจเกี่ยวข้อง: - superuser.com/questions/676497/…ลิงก์ [ตัวกรอง] [3] ทำให้ฉันเชื่อว่านี่เป็นการใช้งานฟังก์ชั่น git ที่เปลี่ยนรหัส (/ เนื้อหา) หากกด / ดึง และการเข้ารหัส / ถอดรหัสจะทำโดยสคริปต์ที่ให้ไว้ หากเป็นเช่นนั้นฉันควรเลือกวิธีที่ง่ายต่อการติดตั้งโดยไม่ต้องวุ่นวายกับสคริปต์เหล่านั้น - โปรแกรมเช่น git-remote-gcrypt นอกจากนี้สิ่งนี้จะเปิดเผยเนื้อหาของพื้นที่เก็บข้อมูลใช่มั้ย
gr4nt3d

- superuser.com/questions/900656/…คำถามที่คล้ายกันโดยเฉพาะกับ bitbucket ที่ไม่มีคำตอบ
gr4nt3d


@ ดูเหมือนจะเป็นวิธีการกรองเหมือนในความคิดเห็นแรกของฉันใช่มั้ย สิ่งนี้จะเข้ารหัส repo ทั้งหมดหรือเพียงแค่เนื้อหาไฟล์หรือไม่?
gr4nt3d

1
คุณดูgit-remote-gcryptหรือKeybaseหรือไม่?
harrymc

คำตอบ:


18

เครื่องมือฟรีและโอเพ่นซอร์สคือ Keybase :

Git รองรับผู้ช่วยเหลือระยะไกล และเราได้ทำโอเพนซอร์ซหนึ่งรายการ

ผู้ช่วยระยะไกลของ Keybase ทำการเข้ารหัสทั้งหมดในขณะที่ให้คอมไพล์ทำสิ่งนั้นได้ สิ่งนี้อาจฟังดูน่าประทับใจ แต่ Keybase ยังไม่ได้นำคอมไพล์มาใช้ใหม่ตั้งแต่ต้น เราให้บริการผู้ช่วยเหลือระยะไกลซึ่งขับเคลื่อนโดยโครงการ Go-git ที่ยอดเยี่ยมซึ่งเราได้เริ่มให้การสนับสนุน

เรานำมาไว้ในตาราง: (1) การเข้ารหัสลับ (2) ทีม + การจัดการคีย์แบบหลายอุปกรณ์ (3) แนวคิดที่ปลอดภัยยิ่งขึ้นของตัวตน

มันถูกเข้ารหัสแบบครบวงจร มีโฮสต์เช่นพูด GitHub แต่มีเพียงคุณ (และเพื่อนร่วมทีม) เท่านั้นที่สามารถถอดรหัสได้ สำหรับ Keybase ทั้งหมดเป็นเพียงสิ่งที่อ่านไม่ออก สำหรับคุณนี่คือการชำระเงินปกติโดยไม่มีขั้นตอนพิเศษ

แม้แต่ชื่อที่เก็บและชื่อสาขาของคุณก็ถูกเข้ารหัสและทำให้เจ้าหน้าที่ฐานข้อมูลหรือผู้บุกรุกไม่สามารถอ่านได้

การทำงานเป็นทีมได้รับการสนับสนุนผ่าน ทีม Keybase :

ทีม Keybase เป็นกลุ่มบุคคลที่มีชื่อพร้อมการเป็นสมาชิกที่ยืดหยุ่น สมมติว่าคุณทำงานในโครงการที่ชื่อว่า Treehouse คุณสามารถลงทะเบียนบ้านต้นไม้บน Keybase ชื่อทีมนี้เป็นสากล สามารถมีได้เพียงหนึ่งทีม Keybase ที่มีชื่อที่กำหนด

ทีมจะได้รับการแชทและช่องทาง การสนทนาดูเหมือน Slack หรือ Discord:

แต่การทำงานเป็นทีมของ Keybase นั้นเป็นการเข้ารหัสแบบครบวงจรซึ่งหมายความว่าคุณไม่ต้องกังวลกับการแฮ็กเซิร์ฟเวอร์

Keybase


2
เครื่องมือที่ดีที่นั่น! อย่างไรก็ตามดูเหมือนว่าจะเป็นระบบนิเวศแบบปิด ฉันไม่พบคำแนะนำที่แสดงวิธีทำงานกับผู้ใช้ที่ไม่ใช่ Keybase เป็นไปได้ไหม ฉันเดาว่าการบังคับให้ทั้งทีมใช้เครื่องมือนี้หรือพึ่งพาได้มากกว่าประโยชน์ที่ได้รับ
gr4nt3d

นี่คือโอเพนซอร์ส เครื่องมือที่คุณพัฒนาจะเปิดขึ้นอีกหรือไม่
harrymc

ฉันหมายถึงการใช้งาน; และฉันไม่แน่ใจว่าผู้ช่วยเหลือทางไกลของคอมไพล์ทำงานอย่างไร ใครใช้คีย์ (ซึ่งไม่ใช่ pgp แต่มีอะไรใหม่ใช่มั้ย) และผู้ช่วยนี้ แต่ไม่มีกุย?
gr4nt3d

ฉันไม่สามารถตอบคำถามเหล่านี้ได้ - ฉันไม่ได้ลึกขนาดนั้น
harrymc

เครื่องมือของบุคคลที่สามสามารถทำงานกับมันได้หรือไม่
มิคกี้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.