สิทธิ์คีย์ส่วนตัว SSH โดยใช้ Git GUI หรือ ssh-keygen นั้นเปิดเกินไป


244

เมื่อเร็ว ๆ นี้ฉันไม่สามารถโคลนนิ่งหรือกดปุ่ม GitHub ได้และฉันพยายามค้นหาสาเหตุที่แท้จริง

นี่คือบน windows

ฉันมี cygwin + git รวมถึง msysgit

Msysgit ได้รับการติดตั้งด้วยตัวเลือกต่อไปนี้:

  • OpenSSH
  • ใช้ Git จากพรอมต์คำสั่งของ Windows

ที่ให้ฉัน 4 สภาพแวดล้อมที่จะลองใช้คอมไพล์ใน:

  • พรอมต์ Windows cmd
  • Powershell
  • Git Bash
  • Cygwin

ยังไงก็เถอะฉันจัดการเพื่อให้ตัวเองอยู่ในตำแหน่งที่เมื่อฉันพยายามโคลนพื้นที่เก็บข้อมูลโดยใช้ 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

ให้สิทธิ์เหมือนเดิม

UPDATE:

ฉันพยายามแก้ไขการอนุญาตไปยังไฟล์เหล่านั้นใน cygwin และ cygwin รายงานการอนุญาตอย่างถูกต้อง gitbash ไม่ได้: alt text http://cdn.cloudfiles.mosso.com/c54102/app7962031255448924.jpg

ความคิดเห็นใด ๆ เกี่ยวกับฉันจะแก้ไขสิทธิ์เหล่านี้ได้อย่างไร


1
คุณอาจต้องการแจ้งให้เราทราบว่าระบบไฟล์เนทิฟคืออะไรที่ C: \ Users \ Ben \ กำลังใช้งานอยู่ ดูเหมือนว่าระบบไฟล์ไม่รองรับการอนุญาตที่แท้จริงหรือการแมปดีกว่าที่เชลล์และระบบไฟล์ทำงานไม่ถูกต้อง คุณสามารถเปลี่ยนการอนุญาตผ่าน Windows ACL ได้หรือไม่
เฉินประกาศ

ฉันใช้ Windows 7 ฉันสามารถเปลี่ยนการอนุญาตเป็นแบบนั้นได้ แต่สิ่งที่ควรจะเป็น เอกสาร github / ssh ทั้งหมดบอกว่าคุณต้องการ 0600 แต่ฉันไม่รู้ว่ามันแปลว่าอะไรใน Windows ACL
Ben Scheirman

2
อืม ... นิดหน่อยจาก sidenote ที่นี่ แต่ chmod-ing ไดเรกทอรีถึง 600 เป็นความคิดที่ไม่ดี ไดเรกทอรี (และไฟล์เรียกทำงาน) จะสูงกว่าหนึ่งหลักเสมอ (700 ไม่ใช่ 600, 755 และ 644) การทำเช่นนั้นในไดเรกทอรีจะทำให้ไม่สามารถแสดงได้ ดูdartmouth.edu/~rc/help/faq/permissions.htmlสำหรับคำอธิบายโดยละเอียดเพิ่มเติม
Mark Embling

คุณไม่เห็นด้วยกับการใช้ PuTTY หรือไม่?
Greg Bacon

ถ้ามันแก้ไขปัญหาของฉันแล้วไม่ แต่ฉันอยากรู้ว่าทำไมการตั้งค่านี้ไม่ทำงานสำหรับฉัน
Ben Scheirman

คำตอบ:


361

คุณเปลี่ยนการอนุญาตในไดเรกทอรีทั้งหมดซึ่งฉันเห็นด้วยกับ Splash เป็นความคิดที่ไม่ดี หากคุณสามารถจำได้ว่าสิทธิ์ดั้งเดิมสำหรับไดเรกทอรีคืออะไรฉันจะพยายามตั้งค่ากลับไปเป็นเช่นนั้นและทำสิ่งต่อไปนี้

cd ~/.ssh
chmod 700 id_rsa

ภายในโฟลเดอร์. ssh ที่จะตั้งค่าไฟล์ id_rsa เป็น rwx (อ่านเขียนดำเนินการ) สำหรับเจ้าของ (คุณ) เท่านั้นและไม่มีสิทธิ์เข้าถึงสำหรับทุกคน

หากคุณจำไม่ได้ว่าการตั้งค่าดั้งเดิมคืออะไรให้เพิ่มผู้ใช้ใหม่และสร้างชุดคีย์ SSH สำหรับผู้ใช้นั้นดังนั้นจึงสร้างโฟลเดอร์. ssh ใหม่ซึ่งจะมีการอนุญาตเริ่มต้น คุณสามารถใช้โฟลเดอร์. ssh ใหม่นั้นเป็นข้อมูลอ้างอิงสำหรับสิทธิ์ในการรีเซ็ตโฟลเดอร์. ssh และไฟล์ของคุณเป็น

หากไม่ได้ผลฉันจะลองถอนการติดตั้ง msysgit ลบโฟลเดอร์. ssh ทั้งหมดในคอมพิวเตอร์ (เพียงเพื่อความปลอดภัย) จากนั้นติดตั้ง msysgit ใหม่ด้วยการตั้งค่าที่คุณต้องการและลองเริ่มใหม่ทั้งหมด (แม้ว่าฉันคิดว่าคุณบอกฉัน คุณลองทำสิ่งนี้แล้ว)

แก้ไข: เพิ่งพบลิงค์นี้ผ่าน Google - แก้ไข "คำเตือน: ไฟล์ลับส่วนตัวแบบไม่มีการป้องกัน!" บน Linuxในขณะที่เป้าหมายอยู่ที่ linux มันอาจช่วยได้เนื่องจากเรากำลังพูดถึงการอนุญาต liunx และอื่น ๆ


2
คำตอบนี้ใช้เฉพาะกับการใช้ cygwin หรือ msysgit (เนื่องจาก msysgit ใช้เซ็ตย่อยของ cygwin หรืออาจเป็น mingw32) ปัญหาคือการอนุญาตในไฟล์ Git ชอบทำงานกับการอนุญาต linux (ส่วนใหญ่) (อาจเป็นผลพลอยได้จากกลุ่มเป้าหมาย) การใช้ git.exe ในเชลล์ Winodws เป็นที่รู้กันว่ามีปัญหาฉันจะแนะนำให้ติดกับ msysgit อย่างน้อยก็จนกว่า GitSharp จะทำงานได้อย่างสมบูรณ์
Koby

2
สิ่งนี้ไม่ทำงานบน windows 8 และการติดตั้ง cygwin ของฉันในเดือนมกราคม 14 หลังจาก chmod 700 แสดงไฟล์เป็น rwxrwx --- สิทธิ์กลุ่มที่จะตั้งค่าเป็นสิ่งที่ฉันตั้งค่าสิทธิ์ผู้ใช้เป็นและฉันไม่สามารถใช้กุญแจได้
Dean Hiller

1
@DeanHiller ที่ได้รับอนุญาตจาก 700 -rwx------ควรมีลักษณะดังนี้ ดังนั้นสิ่งที่คุณแสดงไม่ถูกต้องหากคุณทำคำสั่ง chmod อย่างถูกต้อง
Koby

5
@ Koby ไม่มันเป็นข้อผิดพลาดกับการทำงาน aroudn ... จำเป็นต้องใช้ chgrp -R Users ~ / .ssh แล้ว chmod กำลังทำงานและเปลี่ยนสิทธิ์อย่างถูกต้อง ..... เป็นข้อผิดพลาดที่รู้จักในที่สุดฉันก็พบกับ โพสต์อื่น
Dean Hiller

2
ฉันสามารถตรวจสอบว่ามีข้อผิดพลาดบางอย่างใน GitBash สำหรับ Windows ที่สิทธิ์ที่ถูกต้องไม่สามารถตั้งค่าด้วย chmod หรือสิทธิ์อ่านไม่ถูกต้อง chmod 600 id_rsd; ls -l id_rs -> -rwx-r - r--
Charlweed

74

มีข้อผิดพลาดกับ chmod ของ cygwin โปรดดูที่:

/superuser/397288/using-cygwin-in-windows-8-chmod-600-does-not-work-as-expected

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

ไม่ว่าจะด้วยเหตุผลใดก็ตามการแมปจากการอนุญาตของ Windows ไปยังการอนุญาตแบบคล้าย cygwin / * nix นั้นค่อนข้างคลุมเครือ แม้ว่าฉันจะลบออกสิทธิ์ผู้ใช้อื่น ๆ ทางด้านของ Windows cygwin ยังคงใช้สิทธิ์สำหรับผมแล้วผู้ใช้ , ไปยังอีกกลุ่มNoneชื่อ (ฉันคิดว่านี่เป็นขั้นตอนมาตรฐานเมื่อไม่มีการกำหนดกลุ่มอย่างชัดเจน) การเปลี่ยนแปลงนี้เป็นกลุ่มที่ชัดเจนที่Usersอนุญาตให้ cygwin แยกสิทธิ์และสุดท้ายฉันสามารถตั้งค่า 600 แทน 660 อัตโนมัติ
t-mart

3
นี่คือคำตอบที่ถูกต้องจริง สิ่งที่ได้รับการโหวตให้เป็นคำตอบที่ถูกต้อง - ฉันคิดว่าคนที่โหวตว่าเป็นผู้ใช้งาน linux และไม่ทราบว่าเขาใช้คำสั่งอย่างถูกต้อง ฉันมีปัญหาเดียวกันกับ cygwin วันนี้ ขอบคุณ!
michaelday

ก่อนที่จะใช้โซลูชันนี้เมื่อฉันใช้chmod 600git จะบ่นว่าสิทธิ์ของฉันยังคง0660อยู่ การแก้ไขความเป็นเจ้าของกลุ่มทำให้ chown ใช้ได้อย่างถูกต้อง
Guilherme Rodrigues

1
ฉันอัปเดต Cygwin แล้วและก็ใช้งานได้ พวกเขาจะต้องแก้ไขข้อผิดพลาด
Duncan Calvert

17

สำหรับระบบ * ระวังการแก้ไขที่ชัดเจนคือchmod 600 id_rsaofc แต่ใน windows 7 ฉันต้องตีหัวของฉันกับผนังในขณะที่ แต่แล้วฉันก็พบวิธีแก้ปัญหามายากล:

ไปที่ My Computer / คลิกขวา / คุณสมบัติ / การตั้งค่าระบบขั้นสูง / ตัวแปรสภาพแวดล้อมและลบตัวแปร (อาจมาจากทั้งระบบและสภาพแวดล้อมของผู้ใช้):

CYGWIN

โดยทั่วไปข้อบกพร่องในการ mingw32 ใช้โดย git windows binary เห็นไฟล์ทั้งหมด 644 และโฟลเดอร์ทั้งหมด 755 เสมอ การลบตัวแปรสภาพแวดล้อมไม่ได้เปลี่ยนพฤติกรรมดังกล่าว แต่ปรากฏว่าแจ้ง ssh.exe ให้ละเว้นปัญหา หากคุณตั้งค่าสิทธิ์ที่ถูกต้องให้กับ id_rsa ของคุณผ่านการตั้งค่าความปลอดภัยของ explorers (ไม่จำเป็นต้องมีผู้ใช้คนอื่นในนั้นมากกว่าคุณเองไม่ใช่ "ทุกคน" ไม่ใช่ "ผู้ดูแล" ไม่ใช่ "ผู้ดูแลระบบ" ไม่ใช่แค่คุณ) คุณจะยังคงปลอดภัย

ตอนนี้ทำไม mingw32 ระบบที่แตกต่างกันกว่า Cygwin จะทำให้ใด ๆการใช้งานของตัวแปรสภาพแวดล้อม CYGWIN คือเกินฉัน ดูเหมือนว่าเป็นข้อบกพร่องสำหรับฉัน


3
สิ่งนี้ไม่ได้ผลสำหรับฉัน ฉันยังคงได้รับข้อความ "ไฟล์ลับส่วนตัวไม่ได้รับการป้องกัน" แค่ต้องการแจ้งให้คุณทราบในกรณีที่มีคนอื่นมาโพสต์นี้ด้วยผลลัพธ์ที่คล้ายกัน
ลัค

ทำงานให้ฉัน นี่คือแม้ว่า ฉันไม่ได้ใช้ Cygwin อีกต่อไป คุณคิดยังไงกับโลกนี้?
ช่วงที่

13

ฉันใช้ XP และนี่อนุญาตให้ Git Bash สื่อสารกับ w / 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 git@githubเพื่อดูการเชื่อมต่อที่ดีบั๊ก

  5. ลองกด!

พื้นหลัง: ปัญหาทั่วไปคือการรวมกันของสองสิ่งนี้:

  • BUG: mingw32 เห็นไฟล์ทั้งหมดเป็น 644 (อื่น ๆ / กลุ่มอ่านได้) และไม่มีอะไรที่ฉันพยายามใน mingw32, cygwin หรือ Windows สามารถแก้ไขได้
  • เวอร์ชัน SSH ของ mingw32 จะไม่อนุญาตให้ใช้สำหรับคีย์ส่วนตัว (โดยทั่วไปเป็นนโยบายที่ดีในเซิร์ฟเวอร์)

มัน seams ไม่จำเป็นต้องทำขึ้นไฟล์c:\Documents and Settings\<username>\.ssh\configตั้งแต่ที่คุณได้เข้ามาแทนที่ด้วยc:\Program Files\Git\bin\ssh.exe c:\cygwin\bin\ssh.exeใช่มั้ย
爱国者

เห็นด้วย w / "ผิดหวังมาก" ความคิดเห็น สำหรับ gitolite ฉันทำตามขั้นตอนเหล่านี้คัดลอก cygwin / bin / cyg * ไปยัง Git dir ของฉัน (PortableGit - หรือ - Program Files / Git) และพบว่าฉันสามารถใช้ git จาก Git-Bash แต่ไม่ใช่ cygwin bash การเพิ่มทั้งไดเรกทอรี PortableGit และ Cygwin bin ไปยัง PATH ของฉันยังทำงานได้สำเร็จอย่าง จำกัด ... แต่ฉันยังต้องย้าย PortableGit / bin / ssh.exe {,. bak} เพื่อที่จะไม่ได้ใช้งานโดยไม่ตั้งใจ (แม้ว่าจะเป็น เหมือนกับ c: /cygwin/bin/ssh.exe) โดยทั่วไป ssh.exe จะต้องเรียกใช้จากไดเรกทอรี cygwin เนื่องจากการอ้างอิงอื่น ๆ ที่ไม่ได้คัดลอก
ไมเคิล

แม้ว่าตอนนี้มันใช้งานได้สำหรับฉันแล้วต่อไปที่จะลองก็แค่เพิ่ม Git และ Cygwin ไปที่ PATH และย้าย ssh.exe ของ Git ออกไปเพื่อที่ ssh.exe ของ cygwin จะถูกใช้ (จากไดเรกทอรี bin ของ cygwin)
ไมเคิล

เพิ่มLogLevel DEBUGลงในไฟล์. ssh \ config เพื่อรับผลลัพธ์การดีบักจากกระบวนการ ssh.exe โดย git.exe
knb

ขอบคุณ - โซลูชันนี้ใช้งานได้สำหรับฉัน! โดยเฉพาะจาก c: \ cygwin \ bin \ ฉันคัดลอก ssh.exe, cygcrypto-0.9.8.dll, cygwin1.dll, cygminires.dll และ cygz.dll ไปยัง C: \ Program Files \ Git \ bin \
nexus-bytes

10

สำหรับ Windows 7 โดยใช้ Git พบได้ที่นี่ (ใช้ MinGW ไม่ใช่ Cygwin):

  1. ใน windows explorer คลิกขวาที่ไฟล์ id_rsa ของคุณแล้วเลือก Properties
  2. เลือกแท็บความปลอดภัยแล้วคลิกแก้ไข ...
  3. ทำเครื่องหมายที่ช่องปฏิเสธถัดจากการควบคุมแบบเต็มสำหรับกลุ่มทั้งหมดยกเว้นผู้ดูแลระบบ
  4. ลองคำสั่ง Git ของคุณอีกครั้ง

1
นี่มันสำหรับฉัน แต่ตอนนี้ฉันมีปัญหาใหม่ที่ ssh ไม่ชอบรหัสผ่านของฉันรหัสผ่านใด ๆ ที่ฉันให้ไฟล์กุญแจของฉัน
Jason Southwell

7

ตกลงดังนั้นนี่คือวิธีที่ฉันบังคับการเปลี่ยนแปลงไฟล์ Windows ของฉันเกี่ยวกับการอนุญาตใน Win7: ค้นหาคีย์ ssh ของคุณใน windows explorer: C: \ Users [your_user_name_here] .ssh \ id_rsa

คลิกขวาที่ไฟล์> คุณสมบัติ> แท็บความปลอดภัย> ปุ่มขั้นสูง> เปลี่ยนการอนุญาต

ตอนนี้ลบทุกคนที่ไม่ใช่ชื่อผู้ใช้ของคุณ ซึ่งรวมถึงผู้ดูแลระบบและผู้ใช้ระบบ ณ จุดนี้คุณอาจได้รับการสนทนาเกี่ยวกับการสืบทอดสิทธิ์ - เลือกตัวเลือกที่ไม่ได้รับมรดกเนื่องจากเราต้องการเปลี่ยนไฟล์นี้เท่านั้น

คลิกตกลงและบันทึกจนเสร็จ

ฉันต่อสู้กับสิ่งนี้มาหลายวันเพราะ windows ของฉันจะไม่เปลี่ยนการอนุญาตไฟล์จากบรรทัดคำสั่ง วิธีนี้ก็เป็นจริงทำแทนการใช้งานที่น่าตื่นเต้นที่ทำให้สามารถมีผลกระทบแปลก ๆ


6

การเปลี่ยนการอนุญาตไฟล์จาก Properties, ปิดการใช้งานการสืบทอดและการเรียกใช้ chmod 400 ไม่ทำงานสำหรับฉัน สิทธิ์สำหรับไฟล์กุญแจส่วนตัวของฉันคือ:

-r - r ----- 1 alex ไม่มี 1766 Mar 8 13:04 /home/alex/.ssh/id_rsa

จากนั้นฉันสังเกตเห็นว่ากลุ่มไม่มีดังนั้นฉันจึงวิ่ง

chown alex: ผู้ดูแลระบบ ~ / .ssh / id_rsa

จากนั้นฉันก็สามารถเปลี่ยนการอนุญาตด้วย chmod 400 ได้สำเร็จและรัน git push


4

สำหรับผู้ใช้ MAC:

เปลี่ยนการตั้งค่าของไฟล์คู่คีย์ของคุณโดยพิมพ์ที่เทอร์มินัล:

chmod og-r *filename.pem*

(ตรวจสอบให้แน่ใจว่าคุณอยู่ในไดเรกทอรีที่ถูกต้องหรือชื่อไฟล์เส้นทางในคำสั่งถูกต้อง)


3

ฉันแก้มันทำงาน:

chmod 400 ~/.ssh/id_rsa

ฉันหวังว่าจะช่วย โชคดี.


1
การเปลี่ยนการอนุญาตเป็น 400 ตามที่ Cristian กล่าวไว้จะปลอดภัยมากขึ้น
SylvesterAbreuLoreto

2

หลังจากพูดคุยถึงปัญหาเมื่อไม่นานมานี้และนี่เป็นหนึ่งในผลลัพธ์บนสุดของ google ฉันคิดว่าฉันจะใช้วิธีง่าย ๆ ในการอภิปรายเอกสารที่นี่: http://code.google.com/p/msysgit/issues/detail?id = 261 # C40

เพียงแค่เกี่ยวข้องกับการเขียนทับ mysys ssh.exe ด้วย cygwin ssh.exe ของคุณ


2

ฉันมีปัญหาเดียวกันใน Windows XP เมื่อเร็ว ๆ นี้ ฉันพยายาม chmod 700 บนไฟล์ ~ / .ssh / id_rsa ของฉัน แต่ดูเหมือนว่าจะไม่ทำงาน เมื่อฉันดูสิทธิ์ใช้ ls -l บน ~ / .ssh / id_rsa ฉันจะเห็นว่าสิทธิ์ที่มีประสิทธิภาพของฉันยังคงเป็น 644

จากนั้นฉันจำได้ว่าการอนุญาต windows ยังสืบทอดสิทธิ์จากโฟลเดอร์และโฟลเดอร์ยังคงเปิดให้ทุกคน วิธีแก้ไขอาจเป็นการตั้งค่าการอนุญาตสำหรับโฟลเดอร์ด้วย แต่ฉันคิดว่าวิธีที่ดีกว่าคือบอกให้ระบบละเว้นการสืบทอดสำหรับไฟล์นี้ สิ่งนี้สามารถทำได้โดยใช้ตัวเลือกขั้นสูงในแท็บความปลอดภัยในคุณสมบัติของไฟล์และยกเลิกการเลือก "สืบทอดจากสิทธิ์ผู้ปกครอง ... "

สิ่งนี้อาจเป็นประโยชน์สำหรับผู้อื่นที่มีปัญหาเดียวกัน


1

ตอนนี้ฉันกำลังเล่นกับ Git 1.6.5 และฉันไม่สามารถจำลองการตั้งค่าของคุณได้:

Administrator@WS2008 /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

Administrator@WS2008 /k/git
$ git clone git@github.com: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.

Administrator@WS2008 /k/git
$ ssh git@github.com
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 ไม่ได้แก้ไขการอนุญาตไฟล์สำหรับกุญแจของฉันเช่นกัน

สิ่งแวดล้อม:

  • Windows Server 2008 SP2 บน NTFS
  • ผู้ใช้: ผู้ดูแลระบบ
  • สภาพแวดล้อม vars:
    • PLINK_PROTOCOL = SSH
    • หน้าแรก = c / / โปรไฟล์ / home

อัปเดต: Git 1.6.5.1 ทำงานได้ดี


น่าสนใจ ดูเหมือนว่าคุณกำลังใช้ตัวเลือกผงสำหรับอุดรู?
Ben Scheirman

1

นี่เป็นปัญหาที่เกี่ยวข้องโดยเฉพาะอย่างยิ่งใน Windows ซึ่งไม่เพียงพอที่จะเพียงแค่เปลี่ยนไฟล์อย่างถูกต้อง คุณต้องตั้งค่าสภาพแวดล้อมของคุณ

สำหรับ Windows สิ่งนี้ใช้ได้กับฉัน:

  1. ติดตั้ง cygwin

  2. แทนที่ msysgit ssh.exe ด้วย cyshwin's ssh.exe

  3. ใช้ cygwin bash, chmod 600 ไฟล์คีย์ส่วนตัวซึ่งเป็น "id_rsa" สำหรับฉัน

  4. หากยังไม่สามารถใช้งานได้ให้ไปที่แผงควบคุม -> คุณสมบัติของระบบ -> ขั้นสูง -> ตัวแปรสภาพแวดล้อมและเพิ่มตัวแปรสภาพแวดล้อมต่อไปนี้ จากนั้นทำซ้ำขั้นตอนที่ 3

    ค่าตัวแปร
    CYGWIN sbmntsec


1

ฉันสามารถแก้ไขได้โดยทำสองสิ่งแม้ว่าคุณอาจไม่ต้องทำขั้นตอนที่ 1

  1. คัดลอกจาก cygwin ssh.exe และ cyg * .dll ทั้งหมดลงในไดเรกทอรี bin ของ Git (อาจไม่จำเป็น แต่เป็นขั้นตอนที่ฉันทำ แต่สิ่งนี้เพียงอย่างเดียวไม่ได้แก้ไขสิ่งต่าง ๆ )

  2. ทำตามขั้นตอนจาก: http://zylstra.wordpress.com/2008/08/29/overcome-herokus-permission-denied-publickey-problem/

    ฉันเพิ่มรายละเอียดลงในไฟล์ ~ / .ssh / config ของฉัน:

โฮสต์ heroku.com
ชื่อโฮสต์ heroku.com
พอร์ต 22
อัตลักษณ์เฉพาะใช่ไฟล์
ประจำตัวไฟล์ ~ / .ssh / id_heroku
TCPKeepAlive ใช่
ผู้ใช้แบรนดอน

ฉันต้องใช้ผู้ใช้เป็นที่อยู่อีเมลของฉันสำหรับ heroku.com หมายเหตุ: นี่หมายความว่าคุณต้องสร้างกุญแจฉันทำตามนี้เพื่อสร้างรหัสและเมื่อมันแจ้งให้ใส่ชื่อของคีย์ต้องแน่ใจว่าระบุ id_heroku http: / /help.github.com/win-set-up-git/

  1. จากนั้นเพิ่มคีย์:
    คีย์ heroku: เพิ่ม ~ / .ssh / id_heroku.pub

1

เคล็ดลับสำหรับฉันคือการอัพเดตตัวแปรสภาพแวดล้อมCYGWINด้วย: " tty nodosfilewarning " ไม่จำเป็นต้องเปลี่ยนรหัสด้วยซ้ำ


0

ไม่ใช่คำตอบโดยตรงสำหรับคำถามหลัก แต่สำหรับคำถามของคุณว่าโฟลเดอร์ของ cygwin ทำงานอย่างไร ... ตามกฎทั่วไป cygwin จะวางไฟล์ "ของคุณ" ทั้งหมดไว้ภายใต้ชื่อ c: \ cygwin \ home \ ชื่อผู้ใช้ จะถือว่าโฟลเดอร์นั้นสำหรับการตั้งค่าเฉพาะผู้ใช้มากกว่าไดเรกทอรีผู้ใช้ Windows


0

หากไม่มีเหตุผลที่คุณต้องการเก็บคู่คีย์ส่วนตัว / สาธารณะไว้ (id_rsa / id_rsa.pub) หรือเพลิดเพลินกับการต่อสู้หัวบนกำแพงฉันขอแนะนำให้สร้างใหม่และอัปเดตกุญแจสาธารณะของคุณบน GitHub

เริ่มต้นด้วยการทำสำเนาสำรองของไดเรกทอรี ~ / .ssh ของคุณ

ป้อนข้อมูลต่อไปนี้และตอบกลับ "y" เพื่อระบุว่าคุณต้องการเขียนทับไฟล์ที่มีอยู่หรือไม่

ssh-keygen -t rsa

คัดลอกเนื้อหาของกุญแจสาธารณะไปยังคลิปบอร์ดของคุณ (ด้านล่างเป็นวิธีที่คุณควรทำบน Mac)

cat ~/.ssh/id_rsa.pub | pbcopy

ไปที่บัญชีของคุณบน GitHub และเพิ่มคีย์นี้

Name: My new public key
Key: <PASTE>

ออกจากเทอร์มินัลของคุณและเริ่มใหม่

หากคุณได้รับข้อความแสดงข้อผิดพลาดที่ไม่รู้สึกเช่น "ป้อนรหัสผ่าน" สำหรับรหัสสาธารณะของคุณเมื่อคุณไม่เคยป้อนให้พิจารณาเทคนิคการเริ่มต้นใหม่นี้ อย่างที่คุณเห็นข้างต้นมันไม่ซับซ้อน


0

ฉันไม่เคยจัดการให้คอมไพล์ทำงานได้อย่างสมบูรณ์ใน Powershell แต่ในเชลล์ทุบตี Git ฉันไม่ได้มีปัญหาที่เกี่ยวข้องกับการอนุญาตใด ๆ และฉันไม่จำเป็นต้องตั้งค่า chmod ฯลฯ ... หลังจากเพิ่ม ssh ไปที่ Github ฉันก็ยังทำงานอยู่



0

คุณคัดลอกไฟล์คีย์จากเครื่องอื่นหรือไม่?

ฉันเพิ่งสร้างid_rsaไฟล์บนเครื่องไคลเอนต์จากนั้นวางกุญแจในฉันต้องการ ไม่มีปัญหาสิทธิ์ ไม่มีอะไรให้ตั้งค่า มันเพิ่งได้ผล นอกจากนี้ยังใช้งานได้ถ้าคุณใช้ PuTTYgen เพื่อสร้างคีย์ส่วนตัว

อาจมีปัญหากลุ่มที่ซ่อนอยู่หากคุณกำลังคัดลอกจากเครื่องอื่น

ทดสอบกับเครื่อง Windows 8.1 สองเครื่อง ใช้ Sublime Text 3 เพื่อคัดลอกและวางคีย์ส่วนตัว ใช้ Git Bash (Git-1.9.4-preview20140611)


0

หลังจากอัปเกรดการติดตั้ง Cygwin เป็นรุ่นประมาณเดือนกุมภาพันธ์ 2558 ( 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

@ คำตอบของ koby ไม่ได้ผลสำหรับฉันดังนั้นฉันจึงทำการเปลี่ยนแปลงเล็กน้อย

cd ~/.ssh
chmod 700 id_rsa.pub

มันใช้งานได้ดีสำหรับฉันบน Mac


0

ฉันมีปัญหาเดียวกันใน Windows 10 ที่ฉันพยายาม SSH ลงในกล่อง Vagrant ดูเหมือนว่าจะเป็นข้อบกพร่องใน OpenSSH เวอร์ชั่นเก่า อะไรที่เหมาะกับฉัน:

  1. ติดตั้ง OpenSSH ล่าสุดจากhttp://www.mls-software.com/opensshd.html
  2. where.exe ssh

(หมายเหตุ ".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 -> Settings -> "แก้ไขตัวแปรสภาพแวดล้อมระบบ"
  2. บนแท็บ "ขั้นสูง" คลิก "ตัวแปรสภาพแวดล้อม ... "
  3. ภายใต้ตัวแปรระบบให้แก้ไข "เส้นทาง"
  4. เลือก "C: \ Program Files \ OpenSSH \ bin" และ "เลื่อนขึ้น" เพื่อให้ปรากฏด้านบน
  5. คลิกตกลง
  6. รีสตาร์ทคอนโซลของคุณเพื่อให้อาจใช้ตัวแปรสภาพแวดล้อมใหม่

0

ระบบของฉันยุ่งกับ bash / cygwin / git / msysgit / อาจจะมากกว่า ...

chmodไม่มีผลกับคีย์หรือconfigไฟล์

จากนั้นฉันตัดสินใจที่จะเข้าหาจาก Windows ซึ่งใช้งานได้

  1. คลิกขวาที่ไฟล์ที่ต้องการแก้ไขสิทธิ์
  2. Propertiesเลือก
  3. เลือกSecurityแท็บ
  4. คลิกAdvancedใกล้ด้านล่าง
  5. คลิกChangeถัดOwnerจากด้านบน
  6. พิมพ์ "My-น่ากลัว-ชื่อผู้ใช้" (เห็นได้ชัดว่ามีการเปลี่ยนแปลงชื่อผู้ใช้ Windows ปัจจุบันของคุณ) และคลิกแล้วCheck NamesOK
  7. ภายใต้การPermission entries:ไฮไลต์ของผู้ใช้ที่ไม่ได้เป็น "My-น่ากลัว-ชื่อผู้ใช้" Removeในแต่ละครั้งและเลือก ทำซ้ำจนกระทั่ง "My-Awesome-Username" เหลือไว้เพียงอันเดียว
  8. เลือก "My-Awesome-Username" และคลิกEditด้านล่าง
  9. ตรวจสอบให้แน่ใจว่าType:ได้ตั้งค่าที่ด้านบนเป็นAllowแล้วทำเครื่องหมายที่ช่องทำเครื่องหมายถัดFull controlจาก
  10. Hit OK, Apply, ,OKOK

  11. ลองอีกครั้งตอนนี้ ...

ดูเหมือนว่าบางครั้ง mash-bash ไม่สามารถควบคุมความเป็นเจ้าของไฟล์ได้ มันแปลกโดยเฉพาะอย่างยิ่งเมื่อมันถูกสร้างขึ้นจากสคริปต์ล้อเลียน ไปคิด


0

ไม่มีวิธีแก้ไขปัญหาที่แนะนำที่นี่ (chmod / chgrp / setfacl / windows perms) ทำงานให้ฉันด้วย msys64 บน VM 7 ขององค์กร Windows ในที่สุดฉันก็แก้ปัญหาโดยใช้ตัวแทนเอสเอสกับกุญแจที่ให้ไว้ใน stdin การเพิ่มสิ่งนี้ลงใน.bash_profileทำให้เป็นค่าเริ่มต้นสำหรับการเข้าสู่ระบบ

eval $(ssh-agent -s)
cat ~/.ssh/id_rsa | ssh-add -k -

ตอนนี้ฉันสามารถใช้ git push แล้วดึงด้วยรีโมท ssh

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.