authentication - يتطلب Git push اسم المستخدم وكلمة المرور




github git-push (12)

تصديق دائم مع مستودعات Git ،

قم بتشغيل الأمر التالي لتمكين التخزين المؤقت لبيانات الاعتماد :

$ git config credential.helper store
$ git push https://github.com/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://[email protected]': <PASSWORD>

يجب أن يحدد الاستخدام أيضًا انتهاء صلاحية التخزين المؤقت ،

git config --global credential.helper 'cache --timeout 7200'

بعد تمكين التخزين المؤقت الوثوقية ، سيتم تخزينها مؤقتًا لمدة 7200 ثانية (ساعتان) .

أنا استنسخت مستودع git من حساب جيثب الخاص بي إلى جهاز الكمبيوتر الخاص بي.

أريد العمل مع كل من الكمبيوتر الشخصي والكمبيوتر المحمول ، ولكن مع حساب Github واحد.

عندما أحاول الدفع أو السحب من جيثب باستخدام جهاز الكمبيوتر الخاص بي ، فإنه يتطلب اسم المستخدم وكلمة المرور ، ولكن ليس عند استخدام الكمبيوتر المحمول!

لا أريد كتابة اسم المستخدم وكلمة المرور في كل مرة أتفاعل فيها مع الأصل. ما أنا مفقود هنا؟


إذا كنت تستخدم git (مثل ghost bash) ضمن Windows (وإذا كنت لا تريد التبديل من https إلى ssh)

يمكنك أيضًا استخدام http://gitcredentialstore.codeplex.com/

سيحتفظ هذا التطبيق باسم المستخدم وكلمة المرور لك ...


إذا لم يعمل مفتاح ssh أو .netrc من أجلك ، فإن حل آخر بسيط ولكنه أقل أمانًا يمكن أن يعمل من أجلك هو git-credential-store - مساعد لتخزين بيانات الاعتماد على القرص

git config --global credential.helper store

افتراضيا سيتم حفظ بيانات الاعتماد في ~/.git-credentials . سيتم إنشاؤه وكتابة ل.

يرجى ملاحظة أن استخدام هذا المساعد سيخزن كلمات المرور الخاصة بك غير مشفرة على القرص ، محميًا فقط من خلال أذونات نظام الملفات. إذا لم يكن هذا مقايضة أمان مقبولة.


الخطأ الشائع هو الاستنساخ باستخدام الإعداد الافتراضي (HTTPS) بدلاً من SSH. يمكنك تصحيح ذلك بالانتقال إلى مستودع التخزين الخاص بك ، والنقر فوق الزر ssh الموجود إلى حقل عنوان URL وتحديث عنوان URL الخاص بمصدر بعيد عنك كما يلي:

git remote set-url origin [email protected]:username/repo.git

بالنسبة إلى الأشخاص غير المستعدين الذين يتم الخلط بينهم وبين الإجابات السابقة ، يمكنك القيام بما يلي:

git remote -v

والتي سوف تستجيب شيء من هذا القبيل

origin  https://[email protected]/yourname/yourrepo.git (fetch)
origin  https://[email protected]/yourname/yourrepo.git (push)

بعد ذلك يمكنك تشغيل الأمر الذي اقترحه العديد من الأشخاص الآخرين ، ولكنك الآن تعرف اسمك و yourrepo من أعلى ، لذلك يمكنك فقط قص ولصق yourname/yourrepo.git من الأعلى إلى

git remote set-url origin [email protected]:yourname/yourrepo.git

بصرف النظر عن التغيير إلى SSH ، يمكنك أيضًا استخدام HTTPS ، إذا كنت لا تمانع في وضع كلمة المرور بنص واضح. ضع هذا في ~/.netrc ولن يطلب منك اسم المستخدم / كلمة المرور (على الأقل على Linux و Mac):

machine github.com
       login <user>
       password <password>

إضافة (راجع تعليق 2 لـ VonC): على Windows اسم الملف هو %HOME%\_netrc .

اقرأ أيضًا تعليق VonC الأول في حالة رغبتك في التشفير.

إضافة أخرى (انظر تعليق user137717) والتي يمكنك استخدامها إذا كان لديك git 1.7.10 أو أحدث .

تخزين كلمة مرور github في git باستخدام مساعد بيانات اعتماد :

إذا كنت تستنسخ مستودعات GitHub باستخدام HTTPS ، فيمكنك استخدام مساعد بيانات اعتماد لإخبار Git بتذكر اسم المستخدم وكلمة المرور الخاصين بك في GitHub في كل مرة يتحدث فيها مع GitHub.

يعمل هذا أيضًا على Linux و Mac و Windows.


كان لي نفس المشكلة.

لذلك قم بتغيير ملف .git / config من مشروعي

url = https://github.com/<your-user-here>/<your-repo-here>

إلى

url = [email protected]:<your-user-here>/<your-repo-here>

وأضف المفتاح العام لـ ssh إلى الملف الشخصي git الموجود في الإعداد.

ل ssh المفتاح العام

cat ~/.ssh/id_rsa.pub

كما قال العديد من المستخدمين ، عليك فقط تغيير عنوان URL الخاص ب git repositorie من https إلى SSH.

إذا لم تقم بإنشاء مفتاح SSH في جهازك ، فستضطر إلى القيام بذلك.

فقط كمعلومات إضافية ، بعد القيام بهذا التغيير ما زلت أتلقى نفس الخطأ: تم رفض الإذن.

في حالتي ، كانت المشكلة أنني كنت أستخدم Windows Shell لتنفيذ الأمر ngh ؛ نظرًا لأن هذا الأمر يجب أن يفتح مطالبة لطلب عبارة SSH وأن Windows Shell لا يفتح هذا النوع من المطالبات ، فشلت المصادقة فقط.

لذا ، كان عليّ فقط أن أفتح بوابة git وأنفذ أمر ngh هناك ، ووضعت عبارة SSH في الموجه في كل مرة طلب فيها ذلك و "voilà" ... لقد عملت بشكل جيد!


لقد واجهت المشكلة نفسها للتو ، وكان أبسط حل وجدته هو استخدام عنوان URL الخاص بـ SSH بدلاً من HTTPS:

ssh://[email protected]/username/repo.git

وليس هذا:

https://github.com/username/repo.git

يمكنك الآن التحقق باستخدام SSH Key بدلاً من username password .


ما كان يعمل لي هو تحرير .git/config والاستخدام

[remote "origin"]
        url = https://<login>:<password>@gitlab.com(...).git

وغني عن القول أن هذه طريقة غير آمنة لتخزين كلمة المرور الخاصة بك ولكن هناك بيئات / حالات قد لا يكون فيها هذا مشكلة.


يمكنك تخزين كلمة مرور GitHub الخاصة بك في Git:

فقط اتبع التعليمات من الوثائق الرسمية ل github.

بعد اتباع الإرشادات الواردة من الرابط أعلاه ، يجب أن تكون قادرًا على الدفع / السحب من / إلى الريبو بدون كتابة اسم المستخدم / كلمة المرور الخاصة بك في كل مرة.


تحديث لـ HTTPS:

أطلقت Github برنامجًا جديدًا لـ Windows يخزن بيانات اعتمادك عندما تستخدم HTTPS:

ليستخدم:

قم بتنزيل البرنامج من here

بمجرد تشغيل البرنامج فإنه سيتم تحرير ملف .gitconfig الخاص بك. قم بإعادة الفحص إذا كان قد تم تحرير ملف .gitconfig الصحيح إذا كان لديك العديد منها. إذا لم يقم بتحرير واحد صحيح ، أضف ما يلي إلى .gitconfig الخاص بك

[credential]
    helper = !'C:\\Path\\To\\Your\\Downloaded\\File\\git-credential-winstore.exe'

ملاحظة فاصل الأسطر بعد [credential] . هو مطلوب.

افتح عميل سطر الأوامر وجرّب git push origin master مرة واحدة. إذا طلب منك كلمة مرور ، فأدخلها وانت من خلاله. كلمة المرور المحفوظة!





git-clone