it-swarm.asia

SSH أذونات المفتاح الخاص باستخدام Git GUI أو ssh-keygen مفتوحة للغاية

لم أتمكن مؤخرًا من استنساخ أو الضغط على github ، وأنا أحاول العثور على السبب الجذري.

هذا على النوافذ

لدي cygwin + git وكذلك msysgit.

تم تثبيت Msysgit مع الخيارات التالية:

  • المفتوح
  • استخدام بوابة من ويندوز موجه الأوامر

هذا يعطيني 4 بيئات لمحاولة استخدام git في:

  • كمد ويندوز موجه
  • بوويرشيل
  • جيت باش
  • سيغوين

لقد تمكنت بطريقة ما من الحصول على نفسي في موقف حيث أحاول الخطأ التالي عندما أحاول استنساخ مستودع تخزين باستخدام msysgit أو cmd.exe أو Powershell:

> Initialized empty Git repository in
> C:/sandbox/SomeProject/.git/
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> @    WARNING: UNPROTECTED PRIVATE KEY FILE!          @
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> Permissions 0644 for
> '/c/Users/Ben/.ssh/id_rsa' are too
> open. It is recommended that your
> private key files are NOT accessible
> by others. This private key will be
> ignored. bad permissions: ignore key:
> /c/Users/Ben/.ssh/id_rsa Permission
> denied (publickey). fatal: The remote
> end hung up unexpectedly

يستخدم هذا المجلد .ssh في مجلد c:\users\ben\، وهو ما يستخدمه msysgit. أظن أن cygwin يعمل لأن المجلد .ssh موجود في مكان آخر ، لكنني لست متأكدًا من السبب

في Git Bash ، أتحقق من الأذونات:

$ ls -l -a ~/.ssh

مما يعطيني:

drwxr-xr-x    2 Ben      Administ        0 Oct 12 13:09 .    
drwxr-xr-x   34 Ben      Administ     8192 Oct 12 13:15 ..    
-rw-r--r--    1 Ben      Administ     1743 Oct 12 12:36 id_rsa
-rw-r--r--    1 Ben      Administ      399 Oct 12 12:36 id_rsa.pub    
-rw-r--r--    1 Ben      Administ      407 Oct 12 13:09 known_hosts

يبدو أن هذه الأذونات مريحة للغاية. كيف وصلوا بهذه الطريقة ، ليس لدي أي فكرة.

يمكنني محاولة تغييرها ...

$ chmod -v -R 600 ~/.ssh

الذي يقول لي:

mode of `.ssh' changed to 0600 (rw-------)
mode of `.ssh/id_rsa' changed to 0600 (rw-------)
mode of `.ssh/id_rsa.pub' changed to 0600 (rw-------)
mode of `.ssh/known_hosts' changed to 0600 (rw-------)

لكن يبدو أنه ليس له أي تأثير. ما زلت أحصل على نفس الخطأ ، والقيام به

$ ls -l -a ~/.ssh

تعطي نفس الأذونات كما كان من قبل.

تحديث:

حاولت إصلاح الأذونات لتلك الملفات في cygwin ، وسيجوين تبلغ عن أذوناتها بشكل صحيح ، gitbash لا: نص بديل http://cdn.cloudfiles.mosso.com/c54102/app7962031255448924.jpg

أي أفكار حول كيف يمكنني حقا إصلاح هذه الأذونات؟

240
Ben Scheirman

لقد قمت بتغيير الأذونات في الدليل بالكامل ، وأنا أتفق مع Splash فكرة سيئة. إذا كنت تستطيع أن تتذكر ما هي الأذونات الأصلية للدليل ، فسأحاول إعادة تعيينها إلى ذلك ، ثم القيام بما يلي

cd ~/.ssh
chmod 700 id_rsa

داخل المجلد .ssh. سيؤدي ذلك إلى تعيين ملف id_rsa على rwx (القراءة والكتابة والتنفيذ) للمالك (أنت) فقط ، والوصول صفر للجميع.

إذا كنت لا تستطيع تذكر الإعدادات الأصلية ، فأضف مستخدمًا جديدًا وأنشئ مجموعة من مفاتيح SSH لهذا المستخدم ، وبالتالي أنشئ مجلدًا جديدًا .ssh سيكون له أذونات افتراضية. يمكنك استخدام هذا المجلد .ssh الجديد كمرجع للأذونات لإعادة تعيين مجلد .ssh والملفات إليه.

إذا لم يفلح ذلك ، فسأحاول القيام بإلغاء تثبيت msysgit ، وحذف ALL .ssh من المجلدات على الكمبيوتر (للتدبير الآمن فقط) ، ثم إعادة تثبيت msysgit بالإعدادات المطلوبة وحاول البدء من جديد تمامًا (على الرغم من أنني أعتقد أنك أخبرتني لقد جربت هذا بالفعل).

تم التعديل: تم العثور على هذا الرابط أيضًا عبر Google - تحديد "تحذير: ملف تعريف خاص غير محمي!" على نظام Linux بينما يستهدف نظام التشغيل linux ، إلا أنه قد يساعد نظرًا لأننا نتحدث عن أذونات liunx وما شابه.

356
Koby

هناك خلل في chmod cygwin ، يرجى الرجوع إلى:

https://superuser.com/questions/397288/using-cygwin-in-windows-8-chmod-600-does-not-work-as- متوقع

chgrp -Rv Users ~/.ssh/* 
chmod -vR 600 ~/.ssh/id_rsa
74
kittikun

بالنسبة لأنظمة * nix ، يكون الإصلاح الواضح هو chmod 600 id_rsa ofc ، ولكن في نظام التشغيل Windows 7 كان علي أن أضرب رأسي بالجدار لفترة من الوقت ، ولكن بعد ذلك وجدت الحل السحري:

انتقل إلى جهاز الكمبيوتر/انقر بزر الماوس الأيمن/خصائص/إعدادات النظام المتقدمة/متغيرات البيئة واحذفالمتغير (ربما من كلا النظام وبيئة المستخدم):

CYGWIN

في الأساس ، لها عيب في mingw32 المستخدمة من قبل بوابة ويندوز ثنائي ، ورؤية جميع الملفات 644 وجميع المجلدات 755 دائما. لا تؤدي إزالة متغير البيئة إلى تغيير هذا السلوك ، لكنه يخبر ssh.exe على ما يبدو بتجاهل المشكلة. إذا قمت بتعيين أذونات مناسبة إلى id_rsa الخاص بك من خلال إعدادات أمان المستكشفين (ليست هناك حاجة في الحقيقة إلى وجود أي مستخدم آخر غير المستخدم الخاص بك ، وليس "الجميع" ، وليس "المسؤولين" ، وليس "النظام". لا شيء أنت فقط) ، ستظل آمنًا.

الآن ، لماذا mingw32 ، نظام مختلف عن cygwin ، سيجعل أي استخدام متغير البيئة CYGWIN ، خارج عن ارادتي. يبدو وكأنه علة لي.

17
Tuncay Göncüoğlu

أنا على XP وهذا ما سمح لـ Git Bash بالاتصال مع Github (بعد الكثير من الإحباط):

  1. انسخ c:\cygwin\bin\cyg* (~ 50 ملفًا) إلى c:\Program Files\Git\bin\
  2. انسخ c:\cygwin\bin\ssh.exe إلى c:\Program Files\Git\bin\ (الكتابة الفوقية)
  3. قم بإنشاء الملف c:\Documents and Settings\<username>\.ssh\config الذي يحتوي على:

    Host github.com
        User git
        Hostname github.com
        PreferredAuthentications publickey
        IdentityFile "/cygdrive/c/Documents and Settings/<username>/.ssh/id_rsa"
    
  4. (اختياري) استخدم ssh -v [email protected] لرؤية الاتصال الذي تم تصحيحه.

  5. جرب دفع!

خلفية: المشكلة العامة هي مزيج من هذين:

  • BUG: يرى mingw32 جميع الملفات على أنها 644 (أخرى/يمكن قراءتها في المجموعة) ، ولا يمكن لأي شيء حاولت في mingw32 أو cygwin أو Windows إصلاحه.
  • لن تسمح نسخة SSH الخاصة بـ mingw32 بذلك للمفاتيح الخاصة (عادةً ما تكون سياسة جيدة في الخادم).
13
Steve Clay

بالنسبة لنظام التشغيل Windows 7 باستخدام Git found هنا (يستخدم MinGW ، وليس Cygwin):

  1. في مستكشف Windows ، انقر بزر الماوس الأيمن فوق ملف id_rsa وحدد خصائص
  2. حدد علامة التبويب أمان وانقر فوق تحرير ...
  3. حدد مربع الرفض بجوار التحكم الكامل لجميع المجموعات ، باستثناء المسؤولين
  4. أعد محاولة الأمر Git
10
Brett Pennings

تغيير أذونات الملفات من الخصائص ، وتعطيل الميراث وتشغيل chmod 400 لم ينجح بالنسبة لي. أذونات ملف مفتاحي الخاص هي:

-r - r ----- 1 alex None 1766 March 8 13:04/home/alex/.ssh/id_rsa

ثم لاحظت أن المجموعة لا شيء ، لذلك ركضت للتو

chown alex: المسؤولين ~/.ssh/id_rsa

ثم يمكنني تغيير الأذونات بنجاح مع chmod 400 ، وتشغيل git Push.

6
alex.m

حسنًا ، إليك كيفية فرض التغيير على ملفات Windows الخاصة بي فيما يتعلق بالأذونات على Win7: ابحث عن مفتاح ssh في مستكشف Windows: C:\Users [your_user_name_here] .ssh\id_rsa

انقر بزر الماوس الأيمن فوق الملف> خصائص> علامة تبويب الأمان> زر خيارات متقدمة> تغيير الأذونات

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

انقر فوق موافق وحفظ حتى الانتهاء.

لقد قاتلت مع هذا لعدة أيام لأن بلدي ويندوز لن يغير أذونات الملف من سطر الأوامر. وبهذه الطريقة يتم فعليًا أيضًا - بدلاً من استخدام التدريبات المثيرة التي تجعل من الممكن أن يكون لها عواقب غريبة.

4
diannaL

لمستخدمي MAC:

قم بتغيير إعدادات ملف زوج المفاتيح الخاص بك عن طريق كتابة هذا في الجهاز:

chmod og-r *filename.pem*

(تأكد من أنك في الدليل الصحيح ، أو اسم ملف المسار في الأمر بشكل صحيح).

4
Andrew

أنا حلها قيد التشغيل:

chmod 400 ~/.ssh/id_rsa

آمل أن أساعد. حظا سعيدا.

3
CristianOrellanaBak

واجهت نفس المشكلة في نظام التشغيل Windows XP مؤخرًا. حاولت chmod 700 على ملف ~/.shsh/id_rsa الخاص بك ولكن يبدو أنه لا يعمل. عندما ألقيت نظرة على الأذونات باستخدام ls -l على ~/.ssh/id_rsa ، استطعت أن أرى أن أذوناتي الفعالة لا تزال 644.

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

قد يكون هذا مفيدًا للآخرين الذين يعانون من نفس المشكلة.

2
daramarak

بعد التغلب على المشكلة مؤخرًا وهذا أحد أفضل نتائج google ، اعتقدت أنني سأشارك في عمل بسيط تم توثيقه للنقاش هنا: http://code.google.com/p/msysgit/issues/detail معرف = 261 # c40

ببساطة ينطوي على الكتابة فوق mysys ssh.exe مع cygwin ssh.exe الخاص بك

2
chriskhan

لقد تمكنت من إصلاح ذلك عن طريق القيام بأمرين ، رغم أنك قد لا تضطر إلى تنفيذ الخطوة 1.

  1. نسخة من cygwin ssh.exe وجميع cyg * .dll في دليل Git's bin (قد لا يكون هذا ضروريًا ولكنه خطوة اتخذتها ولكن هذا وحده لم يصلح الأشياء)

  2. اتبع الخطوات من: http://zylstra.wordpress.com/2008/08/29/overcome-herokus-permission-denied-publickey-problem/

    أضفت بعض التفاصيل إلى ملف ~/.ssh/config الخاص بي:

استضافة heroku.com
اسم المضيف heroku.com
المنفذ 22
الهويات فقط نعم
IdentityFile ~/.ssh/id_heroku
TCPKeepAlive نعم
براندون المستخدم

اضطررت لاستخدام المستخدم كعنوان بريدي الإلكتروني لموقع heroku.com ملاحظة: هذا يعني أنك بحاجة إلى إنشاء مفتاح ، لقد تابعت هذا لإنشاء المفتاح وعندما يطالب بإدخال اسم المفتاح ، تأكد من تحديد id_heroku http : //help.github.com/win-set-up-git/

  1. ثم أضف المفتاح:
    مفاتيح heroku: إضافة ~/.ssh/id_heroku.pub
1
Christy Hotney

ما فعلته الحيلة لي هي تحديثCYGWINمتغير البيئة مع: " tty nodosfilewarning ". لا تحتاج حتى إلى chmod المفتاح.

1
tohokami

هذه مشكلة متضمنة بشكل خاص على Windows ، حيث لا يكفي مجرد تغيير الملفات بشكل صحيح. لديك لإعداد البيئة الخاصة بك.

على نظام Windows ، كان هذا مناسبًا لي:

  1. تثبيت cygwin.

  2. استبدل msysgit ssh.exe بـ sg.exe الخاص بـ cygwin.

  3. باستخدام cygwin bash ، chmod 600 هو ملف المفتاح الخاص ، والذي كان "id_rsa" بالنسبة لي.

  4. إذا لم يفلح ذلك ، فانتقل إلى لوحة التحكم -> خصائص النظام -> خيارات متقدمة -> متغيرات البيئة وأضف متغير البيئة التالي. ثم كرر الخطوة 3.

    قيمة متغيرة
    CYGWIN sbmntsec

1
Michael Bosworth

أنا ألعب الآن باستخدام Git 1.6.5 ، ولا يمكنني نسخ إعدادك:

[email protected] /k/git
$ ll ~/.ssh
total 8
drwxr-xr-x    2 Administ Administ     4096 Oct 13 22:04 ./
drwxr-xr-x    6 Administ Administ     4096 Oct  6 21:36 ../
-rw-r--r--    1 Administ Administ        0 Oct 13 22:04 c.txt
-rw-r--r--    1 Administ Administ      403 Sep 30 22:36 config_disabled
-rw-r--r--    1 Administ Administ      887 Aug 30 16:33 id_rsa
-rw-r--r--    1 Administ Administ      226 Aug 30 16:34 id_rsa.pub
-rw-r--r--    1 Administ Administ      843 Aug 30 16:32 id_rsa_PuTTY.ppk
-rw-r--r--    1 Administ Administ      294 Aug 30 16:33 id_rsa_PuTTY.pub
-rw-r--r--    1 Administ Administ     1626 Sep 30 22:49 known_hosts

[email protected] /k/git
$ git clone [email protected]:alexandrul/gitbook.git
Initialized empty Git repository in k:/git/gitbook/.git/
remote: Counting objects: 1152, done.
remote: Compressing objects: 100% (625/625), done.
remote: Total 1152 (delta 438), reused 1056 (delta 383)s
Receiving objects: 100% (1152/1152), 1.31 MiB | 78 KiB/s, done.
Resolving deltas: 100% (438/438), done.

[email protected] /k/git
$ ssh [email protected]
ERROR: Hi alexandrul! You've successfully authenticated, but GitHub does not pro
vide Shell access
Connection to github.com closed.

$ ssh -v
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007

لا يقوم chmod بتعديل أذونات الملفات لمفاتيحي أيضًا.

بيئة:

  • ويندوز سيرفر 2008 SP2 على NTFS
  • المستخدم: المسؤول
  • vars البيئة:
    • PLINK_PROTOCOL = سه
    • منزل =/ج/لمحات/الوطن

التحديث: بوابة 1.6.5.1 يعمل كذلك.

1
alexandrul

اكتب على المحطة:

chmod -Rf 700 ~/.ssh/

وحاول مرة أخرى.

0
João Paulo Cercal

لا تعمل إجابة @ koby بالنسبة لي ، لذلك أقوم بتغيير بسيط.

cd ~/.ssh
chmod 700 id_rsa.pub

هذا يعمل بشكل جيد بالنسبة لي على ماك.

0
Han Pengbo

ما لم يكن هناك سبب أنك تريد الاحتفاظ بهذا الزوج من المفاتيح الخاصة/العامة (id_rsa/id_rsa.pub) ، أو الاستمتاع بضرب رأسك على الحائط ، أوصي فقط بإعادة إنشائها وتحديث مفتاحك العام على github.

ابدأ بجعل نسخة احتياطية من دليل ~/.ssh الخاص بك.

أدخل ما يلي والرد "ص" على ما إذا كنت تريد الكتابة فوق الملفات الموجودة.

ssh-keygen -t rsa

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

cat ~/.ssh/id_rsa.pub | pbcopy

انتقل إلى حسابك على github وأضف هذا المفتاح.

Name: My new public key
Key: <PASTE>

الخروج من المحطة وإعادة تشغيل واحدة جديدة.

إذا تلقيت رسائل خطأ لا معنى لها مثل "إدخال كلمة المرور" للمفتاح العام الخاص بك عندما لم تقم بإدخال واحدة ، ففكر في هذه التقنية. كما ترى أعلاه ، هذا ليس معقدًا.

0
l3x

هل قمت بنسخ الملف الرئيسي من جهاز آخر؟

لقد قمت للتو بإنشاء ملف id_rsa على جهاز العميل ثم لصق المفتاح في أردت. لا مشاكل الأذونات. لا شيء لتعيين. انها عملت فقط. إنه يعمل أيضًا إذا كنت تستخدم PuTTYgen لإنشاء المفتاح الخاص.

ربما تكون هناك مشكلة في مجموعة خفية إذا كنت تنسخها من جهاز آخر.

اختبارها على اثنين من أجهزة ويندوز 8.1. استخدام Sublime Text 3 لنسخ ولصق المفتاح الخاص. باستخدام Git Bash (Git-1.9.4-preview20140611).

0
PhilT

ليست إجابة مباشرة على السؤال الأساسي ، ولكن فيما يتعلق بسؤالك حول كيفية عمل مجلد cygwin ... كقاعدة عامة ، يضع cygwin جميع ملفاتك "" في إطار c:\cygwin\home\username. يعامل هذا المجلد لأي إعدادات خاصة بالمستخدم بدلاً من دليل مستخدم Windows.

0
J Wynia

واجهت نفس المشكلة في نظام التشغيل Windows 10 ، حيث حاولت SSH في مربع Vagrant. هذا يبدو وكأنه خطأ في الإصدار OpenSSH القديم. ما عملت لي:

  1. قم بتثبيت أحدث OpenSSH من http://www.mls-software.com/opensshd.html
  2. where.exe سه

(لاحظ ".exe" إذا كنت تستخدم Powershell)

قد ترى شيئًا مثل:

C:\Windows\System32\OpenSSH\ssh.exe
C:\Program Files\OpenSSH\bin\ssh.exe
C:\opscode\chefdk\embedded\git\usr\bin\ssh.exe

لاحظ أنه في المثال أعلاه ، فإن OpenSSH الأحدث هو الثاني في المسار ، وبالتالي لن يتم تنفيذه.

لتغيير الترتيب:

  1. انقر بزر الماوس الأيمن فوق زر Windows -> الإعدادات -> "تحرير متغيرات بيئة النظام"
  2. في علامة التبويب "تقدم" ، انقر فوق "متغيرات البيئة ..."
  3. ضمن متغيرات النظام ، قم بتحرير "المسار".
  4. حدد "C:\Program Files\OpenSSH\bin" و "تحريك لأعلى" بحيث يظهر في الأعلى.
  5. انقر فوق موافق
  6. أعد تشغيل وحدة التحكم بحيث يتم تطبيق متغيرات البيئة الجديدة.
0
Jasper Citi

بعد ترقية تثبيت Cygwin الخاص بي إلى إصدار حوالي فبراير 2015 (1.7.34(0.285/5/3) 2015-02-04 12:14 x86_64 Cygwin) ، واجهت فجأة تحذير UNPROTECTED PRIVATE KEY FILE.

لقد أصلحت هذه المشكلة بعد تشغيل الأمر التالي:

setfacl -s u::rw-,g::---,o:--- ~/.ssh/id_rsa

( إجابة أخرى لسؤال آخر يعطي المزيد من السياق)

0
Abdull

لم أتمكن مطلقًا من الوصول إلى العمل بشكل كامل في Powershell. لكن في git bash Shell لم يكن لدي أي مشاكل متعلقة بالترخيص ، ولم أكن بحاجة إلى تعيين chmod وما إلى ذلك ... بعد إضافة ssh إلى Github كنت أعمل وأعمل.

0
Sam Kenny