นี่คือคำสั่ง git-remote-gcrypt ที่สามารถทำงานในผู้ให้บริการโฮสติ้งฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
git-remote-gcrypt - GNU Privacy Guard เข้ารหัส git remote
DESCRIPTION
โปรแกรมตัวช่วยระยะไกลถูกเรียกใช้โดย git เพื่อจัดการการขนส่งเครือข่าย ผู้ช่วยคนนี้
จับ การเข้ารหัสลับ:: URL ที่จะเข้าถึงที่เก็บระยะไกลที่เข้ารหัสด้วย GPG โดยใช้ .ของเรา
รูปแบบที่กำหนดเอง
สถานที่ที่รองรับคือ ในประเทศ, ซิงค์: // และ sftp: //โดยที่ที่เก็บถูกเก็บไว้เป็น a
ชุดของไฟล์หรือแทน any โดยที่ gcrypt จะเก็บการเป็นตัวแทนเดียวกันในa
ที่เก็บ git เชื่อมต่อกับการขนส่ง git โดยพลการ
จุดมุ่งหมายคือการให้การจัดเก็บ git ที่เป็นความลับและรับรองความถูกต้องและการทำงานร่วมกันโดยใช้
โฮสต์ไฟล์หรือบริการทั่วไปที่ไม่น่าเชื่อถือ โปรดช่วยเราประเมินว่าเราตอบสนองได้ดีเพียงใด
เป้าหมายการออกแบบ!
หมายเหตุ:
นี่เป็นเวอร์ชันสำหรับการพัฒนา -- รูปแบบที่เก็บอาจมีการเปลี่ยนแปลง
เริ่มต้นอย่างรวดเร็ว
· ติดตั้ง git-remote-gcrypt.php โดยการเรียกใช้ที่ให้มา ติดตั้ง.sh ต้นฉบับ
·สร้างรีโมตเข้ารหัสโดยกดไปที่:
git remote เพิ่ม cryptremote gcrypt::rsync://example.com:repo
คอมไพล์พุช cryptremote master
> gcrypt: การตั้งค่าที่เก็บใหม่
> gcrypt: รหัสระยะไกลคือ :id:7VigUnLVYVtZx8oir34R
> [ บรรทัดเพิ่มเติม .. ]
> เพื่อ gcrypt::[...]
> * [สาขาใหม่] มาสเตอร์ -> มาสเตอร์
การกำหนดค่า
ดังต่อไปนี้ git-config.php(1) รองรับตัวแปร:
ระยะไกล. .gcrypt-ผู้เข้าร่วม
gcrypt.ผู้เข้าร่วม
รายการตัวระบุคีย์ GPG ที่คั่นด้วยช่องว่าง รีโมตถูกเข้ารหัสไว้เหล่านี้
ผู้เข้าร่วมและยอมรับเฉพาะลายเซ็นจากสิ่งเหล่านี้เท่านั้น gpg -k แสดงรายการสาธารณะทั้งหมด
กุญแจที่คุณรู้จัก
หากไม่ได้ตั้งค่าตัวเลือกนี้ เราจะเข้ารหัสคีย์เริ่มต้นของคุณและยอมรับ valid . ใดๆ
ลายเซ็น. พฤติกรรมนี้สามารถร้องขอได้อย่างชัดเจนโดยการตั้งค่าผู้เข้าร่วม
ไปยัง ง่าย.
พื้นที่ ผู้เข้าร่วม gcrypt การตั้งค่าบนรีโมตมีความสำคัญเหนือพื้นที่เก็บข้อมูล
ตัวแปร gcrypt.ผู้เข้าร่วม.
ระยะไกล. .gcrypt-เผยแพร่-ผู้เข้าร่วม
gcrypt.public-ผู้เข้าร่วม
โดยค่าเริ่มต้น รหัสคีย์ gpg ของผู้เข้าร่วมจะถูกปิดบังโดยการเข้ารหัสโดยใช้
gpg -R. การตั้งค่าตัวเลือกนี้เป็น จริง ปิดการใช้งานมาตรการรักษาความปลอดภัยนั้น
ปัญหาเกี่ยวกับการใช้ gpg -R คือการถอดรหัส gpg พยายามแต่ละความลับที่มีอยู่
กลับกันจนพบกุญแจที่ใช้งานได้ ซึ่งอาจส่งผลให้มีข้อความรหัสผ่านที่ไม่จำเป็น
พร้อมท์
ระยะไกล. .gcrypt-signingkey
user.signingkey
(ส่วนหลังจากการกำหนดค่า git ปกติ) คีย์ที่ใช้สำหรับการลงนาม คุณควร
ชุด user.signingkey หากคีย์การลงนามเริ่มต้นของคุณไม่ได้เป็นส่วนหนึ่งของผู้เข้าร่วม
รายการ. คุณสามารถใช้เวอร์ชันต่อรีโมตเพื่อเซ็นชื่อรีโมตต่าง ๆ โดยใช้ different
กุญแจ
และพวกเรา ตัวแปร
GCRYPT_FULL_REPACK
ตัวแปรสภาพแวดล้อมนี้บังคับให้ทำการแพ็คใหม่ทั้งหมดเมื่อทำการกด
ตัวอย่าง
วิธีตั้งค่ารีโมทสำหรับผู้เข้าร่วมสองคน:
git remote เพิ่ม cryptremote gcrypt::rsync://example.com:repo
git config remote.cryptremote.gcrypt-participants "KEY1 KEY2"
คอมไพล์พุช cryptremote master
วิธีใช้แบ็กเอนด์ git:
# สังเกตว่า repo git เป้าหมายต้องมีอยู่แล้วและ
# สาขา `ถัดไป' จะถูกเขียนทับ!
git remote เพิ่ม gitcrypt gcrypt::[ป้องกันอีเมล]:repo#ต่อไป
git ผลักดัน gitcrypt master
ส่วนของ URL (#ต่อไป ที่นี่) ระบุว่าแบ็กเอนด์ใช้สาขาใด
หมายเหตุ
การร่วมมือ
การเข้ารหัสรายการได้รับการอัปเดตสำหรับการกดแต่ละครั้งเพื่อให้ตรงกับผู้เข้าร่วม
การกำหนดค่า ผู้ใช้ที่กดแต่ละคนจะต้องมีกุญแจสาธารณะของผู้ทำงานร่วมกันทั้งหมดและ
การกำหนดค่าผู้เข้าร่วมที่ถูกต้อง
การอ้างอิง
rsync และ โค้ง สำหรับรีโมท ซิงค์: และ เอสเอฟพี: ตามลำดับ ปฏิบัติการหลัก
ต้องการเชลล์ที่รองรับ POSIX ที่รองรับ ในประเทศ.
GNU ความเป็นส่วนตัว ยาม
รองรับทั้ง GPG 1.4 และ 2 คุณต้องมีคีย์ GPG ส่วนบุคคล การกำหนดค่า GPG
นำไปใช้กับตัวเลือกอัลกอริทึมสำหรับการเข้ารหัสคีย์สาธารณะ การเข้ารหัสแบบสมมาตร และ
การลงนาม ดู มนุษย์ gpg สำหรับข้อมูลเพิ่มเติม
ห่างไกล ID
รหัสระยะไกลไม่เป็นความลับ มันเพียงให้แน่ใจว่าสองที่เก็บที่ลงนามโดย
ผู้ใช้คนเดียวกันสามารถแยกแยะได้ คุณจะเห็นคำเตือนหากรหัสระยะไกลเปลี่ยนแปลง
ซึ่งควรเกิดขึ้นก็ต่อเมื่อรีโมตถูกสร้างขึ้นใหม่เท่านั้น
กรุ รูปแบบ
EncSign (X): ลงชื่อและเข้ารหัสไปยังผู้ถือคีย์ GPG
เข้ารหัส (K,X): เข้ารหัสโดยใช้อัลกอริทึมคีย์สมมาตร
แฮช(X): สจ-2/256
B: รายชื่อสาขา
L: รายการแฮช (Hi) และคีย์ (Ki) สำหรับแต่ละ packfile
R: ID ระยะไกล
ในการเขียนที่เก็บ:
จัดเก็บแต่ละ packfile P as เข้ารหัส (Ki, P) → P' ในชื่อไฟล์ Hi
ที่ไหน Ki เป็นสตริงสุ่มใหม่และ แฮช(พี') → Hi
ร้านค้า EncSign(B .) || L || R) ในรายการ
หากต้องการอ่านที่เก็บ:
รับรายการ ถอดรหัส และยืนยันโดยใช้พวงกุญแจ GPG → (NS, L, R)
เตือนถ้า R ไม่ตรงกับ Remote ID ที่เห็นก่อนหน้านี้
แต่ละ สวัสดี Ki in L:
รับไฟล์ Hi จากเซิร์ฟเวอร์ → P'
ตรวจสอบ แฮช(พี') ที่ตรงกัน Hi
ถอดรหัส P' การใช้ Ki → P จากนั้นเปิด P ด้วย git
ประจักษ์ ไฟล์
ตัวอย่างไฟล์ Manifest (มีจุดไข่ปลาเพื่อความกระชับ):
$ 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 และการอ้างอิงของมัน
ห่อ : :
แฮช Packfile (Hi) และคีย์สมมาตรที่สอดคล้องกัน (Ki).
เก็บ : :
แฮช Packfile และการสร้างรีแพ็ก
repo
รหัสระยะไกล
ต่อ ...
ฟิลด์ส่วนขยาย สงวนไว้แต่ไม่ได้ใช้
การตรวจจับ จีคริปต์ พักผ่อน
ในการตรวจสอบว่า git url เป็น gcrypt repo หรือไม่ ให้ใช้: git-remote-gcrypt --check url Exit status if
0 หากมี repo อยู่และสามารถถอดรหัสได้ 1 หาก repo ใช้ gcrypt แต่ไม่สามารถ
ถอดรหัสและ 100 ถ้า repo ไม่ได้เข้ารหัสด้วย gcrypt (หรือไม่สามารถเข้าถึงได้)
โปรดทราบว่าสิ่งนี้จะต้องดึงเนื้อหา repo ลงในที่เก็บ git ในพื้นที่เช่นเดียวกับ
เสร็จสิ้นเมื่อใช้ gcrypt repo
ใช้ git-remote-gcrypt ออนไลน์โดยใช้บริการ onworks.net