ນີ້ແມ່ນຄໍາສັ່ງ git-remote-gcrypt ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
git-remote-gcrypt - GNU Privacy Guard-encrypted git remote
ລາຍລະອຽດ
ໂຄງການຜູ້ຊ່ວຍຫ່າງໄກສອກຫຼີກຖືກເອີ້ນໂດຍ git ເພື່ອຈັດການກັບການຂົນສົ່ງເຄືອຂ່າຍ. ຜູ້ຊ່ວຍນີ້
ມືຈັບ gcrypt:: URLs ທີ່ຈະເຂົ້າເຖິງ repository ຫ່າງໄກສອກຫຼີກ encrypted ກັບ GPG, ການນໍາໃຊ້ຂອງພວກເຮົາ
ຮູບແບບທີ່ກໍາຫນົດເອງ.
ສະຖານທີ່ສະຫນັບສະຫນູນແມ່ນ ທ້ອງຖິ່ນ, rsync:// ແລະ sftp: //, ບ່ອນທີ່ repository ໄດ້ຖືກເກັບຮັກສາໄວ້ເປັນ
ຊຸດໄຟລ໌, ຫຼືແທນອັນໃດກໍໄດ້ ບ່ອນທີ່ gcrypt ຈະເກັບຮັກສາຕົວແທນດຽວກັນຢູ່ໃນ a
git repository, bridged over arbitrary git transport.
ຈຸດປະສົງແມ່ນເພື່ອສະຫນອງຄວາມລັບ, ການເກັບຮັກສາ git ແທ້ຈິງແລະການຮ່ວມມືການນໍາໃຊ້
ໂຮສໄຟລ໌ ຫຼືການບໍລິການທີ່ບໍ່ເຊື່ອຖືປົກກະຕິ. ກະລຸນາຊ່ວຍພວກເຮົາປະເມີນວ່າພວກເຮົາຕອບສະຫນອງສິ່ງນີ້ໄດ້ດີເທົ່າໃດ
ເປົ້າຫມາຍການອອກແບບ!
ຫມາຍເຫດ:
ນີ້ແມ່ນສະບັບພັດທະນາ -- ຮູບແບບບ່ອນເກັບມ້ຽນອາດຈະມີການປ່ຽນແປງ.
ດ່ວນ
· ຕິດຕັ້ງ git-remote-gcrypt ໂດຍການດໍາເນີນການສະຫນອງໃຫ້ install.sh script
· ສ້າງຣີໂໝດເຂົ້າລະຫັດໂດຍການກົດໄປທີ່ມັນ:
git remote ເພີ່ມ cryptremote gcrypt::rsync://example.com:repo
git push cryptremote master
> gcrypt: ການຕັ້ງຄ່າ repository ໃຫມ່
> gcrypt: ID ໄລຍະໄກແມ່ນ :id:7VigUnLVYVtZx8oir34R
> [ສາຍເພີ່ມເຕີມ .. ]
> ເພື່ອ gcrypt::[...]
> * [ສາຂາໃໝ່] master -> master
CONFIGURATION
ຕໍ່ໄປນີ້ git-config(1) ຕົວແປແມ່ນສະຫນັບສະຫນູນ:
ໄລຍະໄກ. .gcrypt-participants
gcrypt.ຜູ້ເຂົ້າຮ່ວມ
ລາຍຊື່ຕົວລະບຸລະຫັດ GPG ທີ່ແຍກກັນໃນພື້ນທີ່. ຣີໂໝດຖືກເຂົ້າລະຫັດໃສ່ສິ່ງເຫຼົ່ານີ້
ຜູ້ເຂົ້າຮ່ວມແລະພຽງແຕ່ລາຍເຊັນຈາກເຫຼົ່ານີ້ໄດ້ຮັບການຍອມຮັບ. gpg -k ລາຍຊື່ສາທາລະນະທັງຫມົດ
ກະແຈທີ່ທ່ານຮູ້ຈັກ.
ຖ້າຕົວເລືອກນີ້ບໍ່ຖືກຕັ້ງ, ພວກເຮົາເຂົ້າລະຫັດເປັນລະຫັດເລີ່ມຕົ້ນຂອງທ່ານແລະຍອມຮັບທີ່ຖືກຕ້ອງ
ລາຍເຊັນ. ພຶດຕິກໍານີ້ຍັງສາມາດຖືກຮ້ອງຂໍຢ່າງຊັດເຈນໂດຍການກໍານົດຜູ້ເຂົ້າຮ່ວມ
to ງ່າຍດາຍ.
ໄດ້ gcrypt-ຜູ້ເຂົ້າຮ່ວມ ການຕັ້ງຄ່າຣີໂມດມີສ່ວນສຳຄັນກວ່າບ່ອນເກັບມ້ຽນ
ຕົວແປ gcrypt.ຜູ້ເຂົ້າຮ່ວມ.
ໄລຍະໄກ. .gcrypt-publish-participants
gcrypt.publish-participants
ໂດຍຄ່າເລີ່ມຕົ້ນ, ids ລະຫັດ gpg ຂອງຜູ້ເຂົ້າຮ່ວມແມ່ນຖືກປິດບັງໂດຍການເຂົ້າລະຫັດໂດຍໃຊ້
gpg -R. ການຕັ້ງຄ່າທາງເລືອກນີ້ເປັນ ທີ່ແທ້ຈິງ ປິດການນຳໃຊ້ມາດຕະການຄວາມປອດໄພນັ້ນ.
ບັນຫາກັບການນໍາໃຊ້ gpg -R ແມ່ນວ່າເພື່ອຖອດລະຫັດ, gpg ພະຍາຍາມແຕ່ລະຄວາມລັບທີ່ມີຢູ່
ກະແຈຕໍ່ກັນຈົນກວ່າມັນຈະພົບກະແຈທີ່ໃຊ້ໄດ້. ນີ້ສາມາດສົ່ງຜົນໃຫ້ລະຫັດຜ່ານທີ່ບໍ່ຈໍາເປັນ
ກະຕຸ້ນ.
ໄລຍະໄກ. .gcrypt-signingkey
user.signingkey
(ອັນສຸດທ້າຍຈາກການຕັ້ງຄ່າ git ປົກກະຕິ) ກຸນແຈທີ່ໃຊ້ສໍາລັບການເຊັນຊື່. ເຈົ້າຄວນ
ທີ່ກໍານົດໄວ້ user.signingkey ຖ້າລະຫັດການເຊັນເລີ່ມຕົ້ນຂອງທ່ານບໍ່ແມ່ນສ່ວນຫນຶ່ງຂອງຜູ້ເຂົ້າຮ່ວມ
ບັນຊີລາຍຊື່. ເຈົ້າອາດຈະໃຊ້ລຸ້ນຕໍ່ໄລຍະໄກເພື່ອເຊັນຣີໂມດທີ່ແຕກຕ່າງກັນໂດຍໃຊ້ທີ່ແຕກຕ່າງກັນ
keys
ENVIRONMENT ຄວາມຮັບຜິດຊອບ
GCRYPT_FULL_REPACK
ຕົວແປສະພາບແວດລ້ອມນີ້ບັງຄັບໃຫ້ບັນຈຸຄືນເຕັມທີ່ເມື່ອມີການຍູ້.
ຕົວຢ່າງ
ວິທີການຕັ້ງໄລຍະໄກສໍາລັບສອງຜູ້ເຂົ້າຮ່ວມ:
git remote ເພີ່ມ cryptremote gcrypt::rsync://example.com:repo
git config remote.cryptremote.gcrypt-participants "KEY1 KEY2"
git push cryptremote master
ວິທີການໃຊ້ git backend:
# ສັງເກດເຫັນວ່າ git repo ເປົ້າຫມາຍຕ້ອງມີຢູ່ແລ້ວແລະຂອງມັນ
# ສາຂາ `ຕໍ່ໄປ` ຈະຖືກຂຽນທັບ!
git remote ເພີ່ມ gitcrypt gcrypt::[email protected]:repo#ຖັດໄປ
git push gitcrypt master
ຊິ້ນສ່ວນ URL (#ຕໍ່ໄປ ທີ່ນີ້) ຊີ້ບອກວ່າສາຂາ backend ໃດຖືກໃຊ້.
ຫມາຍເຫດ
ເຮັດວຽກຮ່ວມກັນ
ການເຂົ້າລະຫັດຂອງ manifest ໄດ້ຖືກປັບປຸງສໍາລັບການຊຸກຍູ້ແຕ່ລະຄົນເພື່ອໃຫ້ກົງກັບຜູ້ເຂົ້າຮ່ວມ
ການຕັ້ງຄ່າ. ຜູ້ໃຊ້ທີ່ຊຸກຍູ້ແຕ່ລະຄົນຕ້ອງມີກະແຈສາທາລະນະຂອງຜູ້ຮ່ວມມືທັງຫມົດແລະ
ການຕັ້ງຄ່າຜູ້ເຂົ້າຮ່ວມທີ່ຖືກຕ້ອງ.
Dependencies
rsync ແລະ curl ສໍາລັບໄລຍະໄກ sync: ແລະ sftp: ຕາມລໍາດັບ. ການປະຕິບັດຕົ້ນຕໍ
ຕ້ອງການແກະທີ່ສອດຄ້ອງກັບ POSIX ທີ່ຮອງຮັບ ທ້ອງຖິ່ນ.
GNU ຄວາມເປັນສ່ວນຕົວ ກອງ
ຮອງຮັບທັງ GPG 1.4 ແລະ 2. ທ່ານຕ້ອງການກະແຈ GPG ສ່ວນຕົວ. ການຕັ້ງຄ່າ GPG
ໃຊ້ໄດ້ກັບທາງເລືອກຂອງລະບົບສໍາລັບການເຂົ້າລະຫັດສາທາລະນະ, ການເຂົ້າລະຫັດແບບສົມມາດ, ແລະ
ເຊັນຊື່. ເບິ່ງ ຜູ້ຊາຍ gpg ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ.
ຫ່າງໄກສອກຫຼີກ ID
ID ໄລຍະໄກບໍ່ແມ່ນຄວາມລັບ; ມັນພຽງແຕ່ຮັບປະກັນວ່າສອງ repositories ເຊັນໂດຍ
ຜູ້ໃຊ້ດຽວກັນສາມາດຈໍາແນກໄດ້. ທ່ານຈະເຫັນຄໍາເຕືອນຖ້າຫາກວ່າ Remote ID ມີການປ່ຽນແປງ,
ເຊິ່ງຄວນເກີດຂຶ້ນພຽງແຕ່ຖ້າຣີໂໝດຖືກສ້າງຄືນໃໝ່.
Repository ຮູບແບບ
EncSign(X): ເຂົ້າສູ່ລະບົບ ແລະເຂົ້າລະຫັດໃສ່ຜູ້ຖືກະແຈ GPG
ເຂົ້າລະຫັດ(K,X): ເຂົ້າລະຫັດໂດຍໃຊ້ symmetric-key algorithm
Hash(X): SHA-2/256
B: ບັນຊີລາຍຊື່ສາຂາ
L: ບັນຊີລາຍຊື່ຂອງ hash (Hi) ແລະກະແຈ (Ki) ສໍາລັບແຕ່ລະ packfile
R: ID ໄລຍະໄກ
ການຂຽນ repository:
ເກັບຮັກສາແຕ່ລະ packfile P as ເຂົ້າລະຫັດ(Ki, P) → P' ໃນຊື່ໄຟລ໌ Hi
ບ່ອນທີ່ Ki ເປັນ string Random ໃຫມ່ ແລະ Hash(P') → Hi
Store EncSign(B || L || R) ໃນ manifest ໄດ້
ເພື່ອອ່ານ repository:
ຮັບ manifest, ຖອດລະຫັດ ແລະຢືນຢັນໂດຍໃຊ້ GPG keyring → (ຂ, L, R)
ເຕືອນຖ້າ R ບໍ່ກົງກັບ Remote ID ທີ່ເຫັນຜ່ານມາ
ສຳ ລັບແຕ່ລະຄົນ Hi, Ki in L:
ເອົາໄຟລ໌ Hi ຈາກເຊີບເວີ → P'
ກວດສອບ Hash(P') ກົງກັນ Hi
Decrypt P' ການນໍາໃຊ້ Ki → P ຫຼັງຈາກນັ້ນເປີດ P ກັບ git
Manifest ເອກະສານ
ຕົວຢ່າງໄຟລ໌ manifest (ມີ ellipsis ສໍາລັບ brevity):
$ 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
repo :id:OYiSleGirtLubEVqJpFF
ແຕ່ລະລາຍການຂະຫຍາຍໄປຈົນຮອດແຖວໃໝ່, ແລະກົງກັບໜຶ່ງໃນຕໍ່ໄປນີ້:
Git object id ແລະການອ້າງອີງຂອງມັນ
ຊອງ : :
Packfile hash (Hi) ແລະກະແຈ symmetric ທີ່ສອດຄ້ອງກັນ (Ki).
ຮັກສາ : :
Packfile hash ແລະການຜະລິດ repack ຂອງມັນ
repo
ID ໄລຍະໄກ
ຕໍ່ ...
ພາກຂະຫຍາຍ, ຮັກສາໄວ້ແຕ່ບໍ່ໄດ້ໃຊ້.
ກວດພົບ GCRYPT ພັກຜ່ອນ
ເພື່ອກວດສອບວ່າ git url ແມ່ນ gcrypt repo, ໃຊ້: git-remote-gcrypt --check url ອອກຈາກສະຖານະຖ້າ
0 ຖ້າ repo ມີຢູ່ແລະສາມາດຖອດລະຫັດໄດ້, 1 ຖ້າ repo ໃຊ້ gcrypt ແຕ່ບໍ່ສາມາດຖືກ.
ຖອດລະຫັດ, ແລະ 100 ຖ້າ repo ບໍ່ໄດ້ຖືກເຂົ້າລະຫັດດ້ວຍ gcrypt (ຫຼືບໍ່ສາມາດເຂົ້າເຖິງໄດ້).
ໃຫ້ສັງເກດວ່ານີ້ຕ້ອງດຶງເອົາເນື້ອໃນ repo ເຂົ້າໄປໃນບ່ອນເກັບຂໍ້ມູນ git ທ້ອງຖິ່ນ, ຄືກັນກັບ
ແມ່ນແລ້ວໃນເວລາທີ່ໃຊ້ gcrypt repo.
ໃຊ້ git-remote-gcrypt ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net