זוהי הפקודה git-remote-gcrypt שניתן להריץ בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות המרובות שלנו, כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS
תָכְנִית:
שֵׁם
git-remote-gcrypt - שלט git מוצפן של GNU Privacy Guard
תיאור
תוכניות עוזר מרחוק מופעלות על ידי git כדי לטפל בהעברת רשת. העוזר הזה
ידיות gcrypt:: כתובות URL שייגשו למאגר מרוחק המוצפן עם GPG, באמצעות שלנו
פורמט מותאם אישית.
מיקומים נתמכים הם מקומי, rsync:// ו sftp: //, שבו המאגר מאוחסן בתור א
סט קבצים, או במקום כל אחד כאשר gcrypt יאחסן את אותו ייצוג ב-a
מאגר git, מגושר על תעבורה שרירותית של git.
המטרה היא לספק אחסון Git סודי, מאומת ושיתוף פעולה באמצעות
מארחי קבצים או שירותים טיפוסיים שאינם מהימנים. אנא עזרו לנו להעריך עד כמה אנחנו עומדים בזה
מטרת עיצוב!
הערה:
זוהי גרסת פיתוח -- פורמט המאגר עשוי להשתנות.
התחלה מהירה
· להתקין git-remote-gcrypt על ידי הפעלת הרכיב שסופק להתקין תַסרִיט.
· צור שלט מוצפן על ידי דחיפה אליו:
git remote הוסף cryptremote gcrypt::rsync://example.com:repo
git push cryptremote master
> gcrypt: הגדרת מאגר חדש
> gcrypt: מזהה מרוחק הוא :id:7VigUnLVYVtZx8oir34R
> [עוד שורות ..]
> כדי gcrypt::[...]
> * [ענף חדש] מאסטר -> מאסטר
תְצוּרָה
הבא git-config(1) משתנים נתמכים:
מְרוּחָק. .gcrypt-participants
gcrypt.participants
רשימה מופרדת מרווחים של מזהי מפתחות GPG. השלט מוצפן לאלה
משתתפים ורק חתימות מאלה מתקבלות. Gpg -k מפרט את כל הציבור
מפתחות שאתה מכיר.
אם אפשרות זו לא מוגדרת, אנו מצפינים למפתח ברירת המחדל שלך ומקבלים כל תקף
חֲתִימָה. ניתן לבקש התנהגות זו במפורש על ידי הגדרת משתתפים
ל פשוט.
אל האני משתתפי gcrypt ההגדרה בשלט עדיפה על המאגר
משתנה gcrypt.participants.
מְרוּחָק. .gcrypt-publish-participants
gcrypt.publish-participants
כברירת מחדל, מזהי מפתח ה-gpg של המשתתפים מוסתרים על ידי הצפנה באמצעות
Gpg -R. הגדרת אפשרות זו ל נָכוֹן משבית את אמצעי האבטחה הזה.
הבעיה בשימוש Gpg -R הוא שכדי לפענח, gpg מנסה כל סוד זמין
מקש בתורו עד שהוא מוצא מפתח שמיש. זה יכול לגרום לביטוי סיסמה מיותר
הנחיות.
מְרוּחָק. .gcrypt-signingkey
user.signingkey
(האחרון מתצורת git רגילה) המפתח לשימוש לחתימה. אתה צריך
סט user.signingkey אם מפתח החתימה המוגדר כברירת מחדל אינו חלק מהמשתתף
רשימה. אתה יכול להשתמש בגרסה לכל מרחוק כדי לחתום על שלטים שונים באמצעות שונים
מפתחות.
הסביבה וריאציות
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:
# שימו לב שה-target git repo חייב כבר להתקיים והוא שלו
# הסניף 'הבא' יוחלף!
git מרחוק הוסף gitcrypt gcrypt::[מוגן בדוא"ל]:repo#הבא
git push gitcrypt master
קטע כתובת האתר (# הבא כאן) מציין באיזה ענף אחורי נעשה שימוש.
אורים
שיתוף פעולה
ההצפנה של המניפסט מתעדכנת עבור כל דחיפה כך שתתאים למשתתף
תְצוּרָה. כל משתמש דוחף חייב להיות בעל המפתחות הציבוריים של כל משתפי הפעולה ו
תצורת משתתף נכונה.
תלוי
rsync ו תלתל עבור שלטים rsync: ו sftp: בהתאמה. קובץ ההפעלה הראשי
דורש מעטפת תואמת POSIX התומכת מקומי.
גנה פרטיות שומר
גם GPG 1.4 וגם 2 נתמכים. אתה צריך מפתח GPG אישי. תצורת GPG
חל על בחירות אלגוריתמים להצפנת מפתח ציבורי, הצפנה סימטרית ו
הַחתָמָה. לִרְאוֹת איש Gpg לקבלת מידע נוסף.
מרוחק ID
המזהה המרוחק אינו סודי; זה רק מבטיח ששני מאגרים חתומים על ידי
ניתן להבחין בין אותו משתמש. תראה אזהרה אם המזהה המרוחק משתנה,
מה שאמור לקרות רק אם השלט נוצר מחדש.
Repository פוּרמָט
EncSign(X): חתום והצפן למחזיק מפתחות GPG
הצפנה (K,X): הצפנה באמצעות אלגוריתם מפתח סימטרי
Hash(X): ש.א.-2/256
B: רשימת סניפים
L: רשימה של ה-hash (Hi) ומפתח (Ki) עבור כל קובץ pack
R: מזהה מרוחק
כדי לכתוב את המאגר:
אחסן כל קובץ pack P as Encrypt(Ki, P) → P' בשם הקובץ Hi
איפה Ki הוא מחרוזת אקראית חדשה ו Hash(P') → Hi
חנות EncSign(B || L || R) במניפסט
לקריאת המאגר:
קבל מניפסט, פענח ואמת באמצעות מחזיק מפתחות GPG → (ב, L, R)
הזהיר אם R לא תואם מזהה מרחוק שנראה בעבר
לכל אחד היי, Ki in L:
קבל קובץ Hi מהשרת → P'
לאמת Hash(P') גפרורים Hi
פענוח P' באמצעות Ki → P ואז לפתוח P עם git
מנשר פילה
קובץ מניפסט לדוגמה (עם אליפסה לקיצור):
$ 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 וה-Ref שלו
לארוז : :
Hash של קובץ Pack (Hi) ומפתח סימטרי מתאים (Ki).
לשמור : :
Hash של Packfile ויצירת האריזה מחדש שלו
הריפו
המזהה המרוחק
שלוחה ...
שדה הרחבה, שמור אך לא בשימוש.
זיהוי GCRYPT מנוחה
כדי לזהות אם כתובת אתר של git היא מאגר gcrypt, השתמש ב: git-remote-gcrypt --בדוק את סטטוס היציאה של כתובת האתר אם
0 אם ה-repo קיים וניתן לפענח אותו, 1 אם ה-repo משתמש ב-gcrypt אבל לא יכול להיות
מפוענח, ו-100 אם ה-repo אינו מוצפן באמצעות gcrypt (או שלא ניתן היה לגשת אליו).
שים לב שזה צריך להביא את תוכן ה-repo למאגר git המקומי, כמו
נעשה בעת שימוש ב-gcrypt repo.
השתמש ב-git-remote-gcrypt באינטרנט באמצעות שירותי onworks.net