سؤال كيف يمكنني إخبار Git for Windows أين أجد مفتاح RSA الخاص بي؟


يعمل إعداد My Git بشكل جيد على Linux ، ولكن عندما أحاول إعداد أشياء تحت Windows (باستخدام Git لـ Windows و تورتويز جت) ، لا أعرف من أين أضع مفتاح SSH الخاص (أو الأفضل ، كيف أقول ذلك ssh حيث يوجدها). أستخدم خيار ssh.exe القياسي أثناء تثبيت Git لـ Windows. يعمل الإعداد بشكل جيد إذا سمحت بمصادقة كلمة المرور (بدلاً من RSA) على الخادم.


464
2017-10-25 16:45


الأصل


لدي نفس المشكلة ، يمكنني استخدام ssh في مربع dev الخاص بي باستخدام مفتاح عام كـ "root" باستخدام برنامج "Git Bash" المثبت مع "Git For Windows" ولكن لا يمكنني تسجيل الدخول كـ "git" مع على الرغم من أنني قمت بنسخ ملفي "authorized_keys" من "الجذر" إلى مستخدم "git" وتعيين المالكين والأذونات بشكل صحيح. لماذا لا يمكنني تسجيل الدخول كـ "git" عندما يعمل "root" مع الملف "authorized_keys" نفسه بالضبط. بدلا من ذلك "git" فإنه يمرر جميع مفاتيح خاصة ، والتي هي نفسها التي تعمل مع "الجذر" ويطلب كلمة مرور. هذا هو خادم Centos 5.5 بالمناسبة. - Jarrod Roberson
@ fozzy lollipop: هل لديك الأذونات الصحيحة في ملف authorized_keys لمستخدم git؟ يجب أن يكون chmod 600 ، ويجب أن يمتلكه مستخدم git. إذا كانت مملوكة للمستخدم الجذر ، فلن تعمل - Dan McClain
نعم كل الملفات والدلائل هي المالكون والأذونات الصحيحة - Jarrod Roberson


الأجوبة:


لجيت باش

إذا كنت تشغل msysgit (أفترض أنك أنت) وتريد تشغيل Git Bash (أوصي به على TortoiseGit ، لكنني أميل إلى واجهة سطر الأوامر (CLI) أكثر من واجهة المستخدم الرسومية الآن) ، تحتاج إلى معرفة ما هو الدليل الرئيسي لـ Git باش ببدءه ثم اكتب pwd (في ويندوز 7 ، سيكون شيء مثل C:\Users\phsr أعتقد). بينما أنت في جيت باش ، يجب عليك mkdir .ssh.

بعد أن يكون لديك الدليل الرئيسي ، و .ssh مجلد تحت ذلك ، تريد فتح PuTTYgen وفتح المفتاح (ملف .ppk) الذي قمت بإنشائه مسبقًا. بمجرد فتح المفتاح الخاص بك ، فإنك تريد أن تختار Conversions -> Export OpenSSH key وحفظها HOME\.ssh\id_rsa. بعد حصولك على المفتاح في ذلك الموقع ، سيتعرف Git Bash على المفتاح ويستخدمه.

ملاحظة: تشير التعليقات إلى أن هذا لا يعمل في جميع الحالات. قد تحتاج إلى نسخ مفتاح OpenSSH إلى Program Files\Git\.ssh\id_rsa (أو Program Files (x86)\Git\.ssh\id_rsa).

ل TortoiseGit

عند استخدام TortoiseGit ، تحتاج إلى ضبط مفتاح SSH عبر اتجاهات الوتيرة. أنت في حاجة للقيام بذلك لكل مستودع تستخدمه مع TortoiseGit.


462
2017-11-05 17:18



لن تعمل تعليمات الوتيرة الخاصة بـ tortoisegit حتى تحصل على المستودع (نظرًا لأن إعداد التكوين "البعيد" لا يظهر إلا إذا كنت تعمل على إعادة الشراء) ، وربما لا يمكنك الحصول على المستودع في المقام الأول إذا كان بإمكانك " ر مصادقة نفسك من أجل الاستنساخ من الأصل. صعب! - Kylotan
مع GitBash وجدت أنني يجب أن نسخ بلدي ~/.ssh/id_rsa ملف ل Program Files\Git\.ssh\id_rsa - الذي كان مربكًا بعض الشيء ، ولكن الآن IntelliJ و Windows cmd يمكنهما الدفع للوصول إلى مستودعات تستخدم مصادقة رئيسية. - JP.
بطريقة مماثلة. أنا فقط تثبيت git-for-windows ، أنا أقوم بتشغيله من cmd.exe. كنت بحاجة لوضع الملفات id_rsa و id_rsa.pub إلى c:\program files (x86)\Git\.ssh . ال .ssh كان دير بالفعل. شكرا ، JP. - Cheeso
الفقرة الثانية كانت ذهبية. :) - Bjørn
@ دامن: يجب أن يكون id_rsa بدون الامتداد. هذا هو اسم الملف ، فهو ليس دليلاً - Dan McClain


باستخدام عميل SSH المدمج الذي يتم شحنه مع Git لـ Windows ، تحتاج إلى إعداد متغير بيئة HOME بحيث يتمكن عميل Git SSH من العثور على المفتاح.

على سبيل المثال ، على ويندوز فيستا التثبيت ، سيتم ذلك عن طريق إصدار setx HOME c:\Users\admin\ على سطر الأوامر.

جعل يومي وتثبيت المشكلة مع Git بشرط أن مفتاحك الخاص غير محمي بكلمة مرور. إذا كنت ترغب في استخدام ssh-agent ، فبإمكانك تشغيل ssh-agent cmd.exe (على الرغم من أنني لم أفعل ذلك) و ssh-add كالمعتاد.

لاحظ أن جميع أدوات Git / SSH يفترض أن يتم تشغيلها من cmd.exe حتى لا غمز نافذة.

إذا كان هذا لا يعمل بشكل صحيح ، فمن المحتمل أن يتم استخدام plink من خلال التغيير والتبديل GIT_SSH. الرجوع إلى جميع البرامج التعليمية SVN + ssh. هذا هو في الأساس نفس السباكة التي تحتاجها للإعداد.


101
2017-11-05 18:24



هذا ما كنت أبحث عنه منذ أن أحاول استخدام موجه الأوامر الخاص بـ Windows ، وليس gher bash. - John Ruiz
حل سهل وسهل ولكن كان من الصعب معرفة ذلك بدون هذا! - thaddeusmt
المهم هو كذلك عدم وجود فراغات بين HOME = و c: \ ... لقد أدى حل Oct إلى الحيلة بالنسبة لي. :-) - Lutz
ال setx HOME c:\Users\admin` command doesn't seems to be working in Git Bash. You have to use cmd` بدلا من ذلك. - trejder
+1 GIT_SSH=c:\pathto\plink.exe - Nick Grealy


يمكنك تحديد الموقع الرئيسي لـ TortoiseGit بالطريقة التالية:

  • افتح نافذة مستكشف.
  • افتح Contextmenu وانتقل تورتويز جت → الإعدادات
  • في النافذة المفتوحة الآن ، انتقل إلى بوابة → التحكم عن بعد
  • تعيين المسار إلى مفتاح PuTTY الخاص بك في مربع الإدخال المقابل.

لقطة الشاشة أدناه:

Enter image description here


48
2017-11-05 14:07



بالإضافة إلى ذلك ، إذا كنت بحاجة إلى تحويل مفتاحك الخاص إلى تنسيق ".ppk" من تنسيق آخر يمكنك متابعته هذه - Tariq M Nasim
عملت معي. - Maxim Eliseev
Git> يظهر Remote فقط عندما تقوم باستنساخ المستودع بنجاح. - Steve Pitchers
الحل الأسهل بكثير هو تعيين كل شيء يعمل بشكل صحيح في git (باستخدام openSSH) ، ثم أخبر TortoiseGit لاستخدام ssh.exe المستخدم بواسطة git. نرى stackoverflow.com/a/33328628/318317 بهذه الطريقة ، تحتاج فقط إلى إصلاح هذا مرة واحدة. - Daniel Rose


لم يعمل أي من الإجابات السابقة بالنسبة لي. هنا كان ما نجح في النهاية بالنسبة لي. انها في الواقع بسيطة إلى حد ما ، إذا كنت تعرف ما اكتب. انها لا تحتاج PuTTY.

  • افتح موجه Git Bash
  • اكتب "ssh-keygen"
    • اقبل الموقع الافتراضي
    • اختر عبارة مرور فارغة (لذلك فقط اضغط على "أدخل" على كل الأسئلة ")
  • الآن انسخ المفتاح العام إلى خادمك ، على سبيل المثال: scp ~ / .ssh / id_rsa.pub someuser@someserver.com: ~

هذا هو الشيء على جهاز الكمبيوتر الخاص بك القيام به. الآن ssh في الخادم الوجهة ، ثم القيام به

mkdir -p ~/.ssh
cd ~/.ssh
cat ../id_rsa.pub >> authorized_keys
rm ../id_rsa.pub

هذا هو! انت انتهيت! من Git Bash ، قم بما يلي لاختبار:

ssh someuser@someserver.com ls

إذا كان يسرد الملفات الموجودة في الدليل الرئيسي الخاص بك على خادم Git ، ثم يتم الانتهاء من ذلك!

بالنسبة إلى GitHub ، ليس لديك إمكانية وصول shell إلى الخادم الخاص بهم ، ولكن يمكنك تحميل المفتاح باستخدام موقع الويب الخاص بهم ، لذلك بالنسبة إلى "نسخ الآن إلى الخادم" ، قم بما يلي:

  • في Git Bash ، اكتب "cat ~ / .ssh / id_rsa.pub" ، وحدد النتيجة ، وانسخها إلى الحافظة.
  • على موقع GitHub ، انتقل إلى "إعدادات الحساب" ، "SSH ومفاتيح GPG" ، وانقر فوق "مفتاح SSH جديد" ، وقم بلصق المفتاح.

45
2018-04-25 01:32



لا تقم بإنشاء مفاتيح بدون وجود عبارات مرور. إنها مثل وضع كلمة المرور في ملف نصي ، باستثناء أن الجميع يعرف الموقع الافتراضي للمفاتيح الخاصة. - GregB
أنت تجيب عن السؤال الخطأ. Q هو كيفية الإشارة إلى مفتاح خاص موجود. - Orangutech
GregB ، أنظر إلى الأمر كما يلي: أي خادم أنشئ له مفتاحًا أقل كلمة المرور آمنًا كحاسوبي المحمول ، إنه امتداد للمحيط الأمني ​​للكمبيوتر المحمول الخاص بي. في الواقع ، ولا حتى ، بما أن دليل منزلي مشفر ؛-) لذا ، فهو آمن مثل قسم المنزل المشفر على الكمبيوتر المحمول الخاص بي ، وهو "جيد بما فيه الكفاية" لضمان الوصول إلى جيثب ، في رأيي. (التي قد تختلف من وجهة نظرك بالطبع!) - Hugh Perkins
GregB لا تسقط في جنون العظمة! :] بالتأكيد ، أن استخدام مفاتيح محمية بكلمة مرور أكثر أمانًا بكثير ، من استخدام كلمة مرور أقل ، ولكن الادعاء بأن مفتاح كلمة المرور أقل من السهل كسره لأن تخزين كلمات المرور في ملف نصي هو خطأ واضح. لقد رأيت العديد من الأدلة ، التي تشجع المستخدمين على استخدام مفاتيح محمية بكلمة مرور ، لكنني لم أر أي مطالبة ، وأن استخدامها بدون كلمات مرور ليس آمنًا على الإطلاق. بالإضافة إلى ذلك: لا تدعم بعض الأنظمة حلولًا لتذكر كلمة مرور المفتاح ، والتي يدخلها المستخدمون ، وتسأل عن ذلك ، في كل مرة يتم استخدام المفتاح. مما يجعل استخدام مفاتيح SSH لا طائل في هذه الحالة. - trejder
من أجل المحادثة ، التي انحرفت عن السؤال الأصلي ، فإن مفاتيح SSH هي بالتأكيد أكثر أمانًا من كلمات المرور ، لكن هذا الأمان يتعرض للخطر من خلال عدم تشفير مفاتيح SSH الخاصة بك. تتمثل مقاربتي الشخصية في إلغاء قفل المفاتيح في بداية اليوم باستخدام وكيل SSH ، والذي يحتفظ بالمفاتيح التي تم فك تشفيرها في الذاكرة حتى لا أحتاج إلى إعادة إدخال كلمة المرور طوال اليوم. بما أنHuegh Perkins من التعليقات ، وأنا أعيد الصياغة ، فأنت تعرف جميعًا متطلبات الأمان الخاصة بك بشكل أفضل مما أقوم به. - GregB


إذا كنت تستخدم msysgit مع أدوات OpenSSH ، فستحتاج إلى إنشاء ~/.ssh/id_rsaأو إنشاء تهيئة Git في ~/.ssh/config مما يشير إلى مفتاحك.

في ما يلي مثال لتهيئة Git لـ Bitbucket التي ستستخدم اسم المستخدم الصحيح ، ومفتاح آخر غير المفتاح الافتراضي (في حالة الحفاظ على مفتاح واحد لاتصالات SSH ، والآخر لحسابات Git).

~ / .ssh / التكوين:

Host bitbucket.org
    Hostname bitbucket.org
    User git
    IdentityFile /C/keys/yourkey.key

مرة واحدة في Git Bash ، يمكنك تشغيل أمرين لإضافة المفتاح الخاص بك إلى ssh-agent جلسة العمل الحالية لتجنب الاضطرار إلى كتابة كلمة مرور المفتاح بشكل متكرر.

eval `ssh-agent`
ssh-add /C/keys/yourkey.key

34
2018-04-11 06:34



لقد فعلت هذا ولكن من أجل github.com: المضيف github.com IdentityFile ~ / .ssh / github_rsa - Sarah Vessels
إذا كان لديك مساحة في مسارك ، فيجب استخدام علامات الاقتباس: IdentityFile "/ C / My Keys / key" - r03
أنا أفضل هذه الطريقة ، لأن هذا سمح لي بتوصيل مفاتيح موجودة بسرعة من أجهزة الكمبيوتر الأخرى - Kirill Gusyatin
بلدي .gitconfig ديه أقسام. تحت أي الأقسام يجب علي وضع هؤلاء المضيفين؟ - Steve Yakovenko


لقد قمت بتعيين٪ HOME٪ =٪ HOMEPATH٪

هذا له ميزة العمل لكافة المستخدمين الذين يقومون بتسجيل الدخول إلى النظام (يحصل كل منهم على مجلدات .ssh منفصلة).

في فيستا:

  1. انقر بزر الماوس الأيمن على الكمبيوتر
  2. اختر خصائص
  3. انقر فوق Advanced System Settings (إعدادات النظام المتقدمة)
  4. انقر على متغيرات البيئة
  5. في القسم السفلي (متغيرات النظام) انقر على جديد
  6. لنوع الاسم المتغير: HOME
  7. لنوع المسار المتغير:٪ HOMEPATH٪
  8. انقر فوق موافق

14
2017-10-12 01:26



في حالتي قمت بإضافة HOME =٪ USERPROFILE٪ - igor
لاحظ أن %HOMEPATH% لا يحتوي على حرف محرك الأقراص ، لذلك إذا لم يكن المصدر قيد التشغيل C: تحتاج إلى الإضافة C: إلى %HOME%. - Graeme Perrow


يجب إضافة مفتاحك الخاص إلى وكيل SSH على محطة العمل الخاصة بك. إن كيفية تحقيق ذلك قد تعتمد على عميل git الذي تستخدمه ، ومع ذلك قد يقوم puTTY والوكيل المرتبط به (المسابقة) بخداعك ، وهنا الرابط إلى الثنائيات الرسمية والمصدر:

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html


7
2017-10-25 17:38



ذكرت أعلاه أنني أستخدم Git لـ Windows وأنا أستخدم ssh.exe (مغلفة w / git) بدلاً من المعجون. يجب أن يكون هناك بعض الممارسات المعتادة لإضافة مفتاح خاص ، لا أستطيع أن أجد كيف. على الرغم من أن تبديل البرنامج قد يسمح لي بالفعل بتسجيل الدخول ، إلا أنه يجب أن يكون هناك طريقة للقيام بذلك باستخدام إعداد Git القياسي ، أليس كذلك؟ - binaryorganic
آسف أنا لا أعمل على النوافذ ، فقط لينكس. لكن يجب أن يكون المفتاح في وكيل SSH الخاص بك. هل هناك agent.exe أو شيء ما على هذه الخطوط؟ - Declan Shanaghy
نعم ، كان الإعداد كعكة على الجانب لينكس. ولكن علي أن أعمل على ويندوز أيضا للأسف. هناك العديد من الملفات القابلة للتنفيذ المتعلقة بـ ssh في مجلد git / bin على Windows box (ssh، ssh-add، ssh-agent، ssh-keygen & ssh-keyscan) ، لكني لا أعرف كيفية جعل أي منها افعل أي شيء. انهم مجرد وميض نافذة كمد مفتوحة وإغلاق على الفور. أنا متعكز. - binaryorganic
المسابقة بالفعل تحل المشكلة بالنسبة لي - لدي اختصار في مجلد بدء التشغيل "قائمة ابدأ" (C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) يشير الى "C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk"، بحيث يقوم بتحميل مفاتيح SSH الخاصة بي عند بدء التشغيل وهذا يجعل GIT "العمل فقط": س) - Owen Blacker
تضمين التغريدة أنت بالتأكيد يجب اكتب هذا التعليق بالحجم الكامل إجابة! هذا هو الحل الوحيد هنا، هذا ساعدني وحل مشكلتي! للأسف ، يمكنني منحك إجراء 1+ فقط! :] - trejder


حسنا ، نظرت في اقتراح ..

ولكن وضع مفاتيح SSH الخاصة في المجلد العام لم أكن أعتقد أنها كانت فكرة جيدة ، لذلك بدأت في البحث عن المكان الذي كان فيه.

لذا إذا كنت تريد حماية مفتاح SSH الخاص بك بشكل صحيح ، يجب أن تضع المفتاح الخاص بك في الدليل التالي:

بالنسبة إلى نظام التشغيل Windows 7 و 8 و 8.1 الإصدار 32 بت:

C: \ Users \\ AppData \ Local \ VirtualStore \ Program Files \ Git \

بالنسبة إلى نظام التشغيل Windows 7 و 8 و 8.1 الإصدار 64 بت:

C: \ Users \\ AppData \ Local \ VirtualStore \ Program Files (x86) \ Git \


4
2017-09-08 10:04



هاي باس أعتقد أنه يجب عليك حذف سؤالك وطلبه أو تقديمه مستخدم سوبر لأن هذا هو الموقع الخطأ لهذا النوع من الأسئلة / الإجابات :-) - Ian Macintosh
لا استغراق لي فقط sugestion - Bas van den Dikkenberg
كان هذا أبسط حل على جهاز Win7 الخاص بي. مثلك ، بحثت عنه known_hosts. من المؤكد أنه كان في C:\Users\Dave\AppData\Local\VirtualStore\Program Files (x86)\Git\.ssh. من خلال وضع ملف المفتاح الخاص بي (id_rsa) في هذا الدليل ، تمكن ssh من العثور عليه بدون شكوى. لقد قمت بقراءة صغيرة - هذه هي الطريقة التي يعالج بها Windows (البرامج القديمة) محاولة الكتابة إلى المناطق المحظورة (مثل "C: \ Program Files \") ، لذا فإن ssh الخاص بـ Git لا يدرك تمامًا أنه يكتب إلى دليل VirtualStore ، Windows يتعامل مع ذلك بشفافية. على الأقل هذه الملفات تنتمي إلى مستخدم! - DaveGauer