ใช้คอมไพล์ผ่าน cygwin บน windows 8


16

ฉันมี windows 8 dev แสดงตัวอย่าง (ไม่แน่ใจว่าเกี่ยวข้องหรือไม่ แต่ฉันไม่เคยมีปัญหากับ w7) และฉันพยายามโคลน repo git จาก github

ปัญหาคือของฉัน ~ / .ssh / id_rsa มี 440 สิทธิ์และต้องเป็น 400 ฉันได้ลอง chmodding แต่การเปลี่ยนแปลงใด ๆ เกี่ยวกับการอนุญาตของผู้ใช้จะแสดงในสิทธิ์ของกลุ่ม (เช่น chmod 600 ส่งผลให้ 660 เป็นต้น ) สิ่งนี้ดูเหมือนจะคงที่ตลอดทั้งไฟล์ในระบบไฟล์ทั้งหมด

ฉันได้ลองทำกับ ACL แล้ว แต่ก็ไม่มีประโยชน์ (การควบคุมเต็มรูปแบบกับผู้ใช้ของฉันและปฏิเสธทุกคนส่งผลให้เป็น 000)

นี่เป็นผลงานบางส่วนที่จะช่วย:

$ git clone [removed]
Cloning into [removed]...
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0660 for '/home/john/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /home/john/.ssh/id_rsa
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

$ ll ~/.ssh
total 6
-r--r----- 1 john None 1675 Nov 30 19:15 id_rsa
-rw-rw---- 1 john None  411 Nov 30 19:15 id_rsa.pub
-rw-rw-r-- 1 john None  407 Nov 30 18:43 known_hosts

$ chmod -v 400 ~/.ssh/id_rsa
mode of `/home/john/.ssh/id_rsa' changed from 0440 (r--r-----) to 0400 (r--------)

$ ll ~/.ssh
total 6
-r--r----- 1 john None 1675 Nov 30 19:15 id_rsa
-rw-rw---- 1 john None  411 Nov 30 19:15 id_rsa.pub
-rw-rw-r-- 1 john None  407 Nov 30 18:43 known_hosts

$ set | grep CYGWIN
CYGWIN='sbmntsec ntsec server ntea'

ฉันรู้ว่าฉันสามารถใช้ msysgit หรืออะไรก็ได้ แต่ฉันต้องการที่จะทำทุกอย่างจากเทอร์มินัลเดียว

แก้ไข: Msysgit ไม่ทำงานด้วยเหตุผลเดียวกัน


ปัญหาเดียวกันที่นี่ Windows 8 Consumer Preview
Simon Hartcher

"ฉันพยายาม messing กับ ACLs แต่ไม่มีประโยชน์ (การควบคุมเต็มรูปแบบกับผู้ใช้ของฉันและปฏิเสธทุกคนที่ส่งผลให้ 000) " ดังนั้นls -lแสดงสิทธิ์เป็น000( ----------) - แต่คุณยังสามารถอ่านไฟล์และทำsshและgit cloneบ่น เกี่ยวกับมัน? ฉันคาดเดาว่าsshจะไม่บ่นเกี่ยวกับการอนุญาตที่เข้มงวดเกินไป การดูรหัสต้นฉบับอย่างรวดเร็วมีแนวโน้มที่จะยืนยันสิ่งนี้ แต่ฉันยังไม่ได้ทดสอบ
Keith Thompson

คำตอบ:


26

ไม่จำเป็นต้องมีกลุ่มว่างเปล่า

ระหว่างการติดตั้ง cygwin ไฟล์ทั้งหมดไม่มีอยู่ในกลุ่ม ls -alคุณสามารถตรวจสอบได้โดยการทำ คุณจะเห็นว่าไม่มีกลุ่ม ("none") ในไฟล์ เพียงเปลี่ยนเป็นผู้ใช้:

chgrp Users *

หลังจากนี้คุณสามารถทำchmodอะไรก็ได้ที่คุณชอบ


chgrp Users *จะเปลี่ยนเฉพาะไฟล์และโฟลเดอร์$PWDทั้งหมด ในการเปลี่ยนโฟลเดอร์ย่อย / ไฟล์ทั้งหมดเช่นเดียวกับ $ PWD ให้ใช้ตัวเลือก -R:chgrp -R users *
adam

4

ฉันพบแฮ็คเฉพาะของ Cygwin เพื่อแก้ไขปัญหานี้ในตอนนี้

เวอร์ชั่นย่อ:
เพียงสร้างกลุ่ม windows ว่างใหม่ใช้ chgrp เพื่อเปลี่ยนกลุ่ม id_rsa เป็นกลุ่มนี้จากนั้นปฏิเสธสิทธิ์การอ่าน / เขียนสำหรับกลุ่ม

รุ่นยาว:
กดซุปเปอร์สำคัญและประเภทlusrmgr.msc ใช้ผู้จัดการนี้เพื่อสร้างกลุ่มว่างเปล่าที่เรียกว่าพูดว่าEMPTY_GROUP

ตอนนี้เราต้องบอก Cygwin เกี่ยวกับกลุ่มใหม่นี้

mkgroup > /etc/group

ต่อไปเราจะอัพเดตกลุ่มของid_rsa :

chgrp EMPTY_GROUP ~/.ssh/id_rsa

สุดท้ายไปหาid_rsaใน Windows Explorer และภายใต้แท็บความปลอดภัยในคุณสมบัติปฏิเสธสิทธิ์อ่าน / เขียนและคุณควรจะไป

ฉันไม่แน่ใจว่า Cygwin สามารถจัดการกับสิ่งนี้ได้ใน 7 แต่ไม่ใช่ 8 แต่ปัญหาดูเหมือนว่าจะเกิดจากกลุ่มของไฟล์ id_rsa เป็น None กลุ่มที่มีการเข้าถึงการอ่าน / เขียนเต็มเสมอ

นอกจากนี้ดูเหมือนว่าจะใช้งานได้เฉพาะกับ ssh.exe ที่มาพร้อมกับ Cygwin เท่านั้นดังนั้นหากคุณต้องการใช้ say ssh ด้วย git ให้เขียนทับ ssh.exe จาก bin ใน git ของคุณด้วยการติดตั้งจากโฟลเดอร์ bin ใน Cywgin ของคุณ .


2

รับรางวัล 8 + Cygwin

ฉันใช้ Windows 8, 64 บิต การทำสิ่งต่อไปนี้ช่วยให้ฉัน:

## Start Cygwin shell
cd .ssh
chmod 600 key-file-name

1

ใน cygwin พิมพ์คำสั่งเหล่านี้:

  • ตั้งค่ากลุ่มที่ถูกต้องเป็นโฮมโฟลเดอร์:

    chgrp -Rv HomeUsers /home

  • ตั้งค่าการอนุญาตที่ถูกต้องสำหรับไฟล์เอกลักษณ์ ssh:

    chmod 600 -Rv ~/.ssh/id*

NB: คำตอบที่ยอมรับก่อนหน้านี้ล้าสมัย ชื่อกลุ่มคือ "HomeUsers" ไม่ใช่ "Users" ยังไม่สามารถแสดงความคิดเห็นได้


1

ฉันต้องการแสดงความคิดเห็นเกี่ยวกับปัญหานี้เช่นกัน ฉันพบปัญหาคล้ายกันใน Windows 7 PC ของฉันโดยใช้ git ผ่าน Cygwin

เมื่อพยายามที่จะผลักดันการเปลี่ยนแปลงจากพื้นที่เก็บข้อมูล git ท้องถิ่นของฉันไปยังพื้นที่เก็บข้อมูลระยะไกล (ใช้ ssh และ keypair สำหรับการตรวจสอบ), git โยนข้อความที่สิทธิ์0660เปิดเกินไปสำหรับไฟล์

~ / .ssh / id_rsa

แน่นอนว่ามันก็โอเคสำหรับ ssh-agent ที่จะปฏิเสธคีย์ส่วนตัวที่เปิดอยู่

ดังนั้นฉันจึงลองสิ่งต่าง ๆ ที่กล่าวถึงในเธรดนี้และเธรดอื่น ๆ ที่เกี่ยวข้องกับความเป็นเจ้าของและรูปแบบ rwx ของไฟล์และโฟลเดอร์ ~ / .ssh

chgrp Users ~/.ssh/*
chmod 400 ~/.ssh/id_rsa

อย่างไรก็ตามข้อผิดพลาดเดียวกันถูกโยนซ้ำไปซ้ำมา

ด้วยเหตุผลบางอย่างจำเป็นต้องฆ่ากระบวนการ ssh-agent ใน cygwin และดำเนินการคำสั่งต่อไปนี้ใน bourne shell อีกครั้ง (bash)

eval `ssh-agent -s`

อย่าลืมเพิ่มข้อมูลประจำตัวที่ต้องการลงใน ssh-agent เช่น

ssh-add ~/.ssh/id_rsa

จากนั้นฉันก็ทำซ้ำคำสั่ง push ที่ถูกต้องเช่น

git push origin master

และทุกอย่างทำงานได้ดี


0

ที่จะขยายคำตอบ Roi ดอง หากคุณติดตั้ง Windows 8 ผ่านการติดตั้ง Windows เก่าของคุณและไดเรกทอรี cygwin ก่อนหน้านี้ของคุณยังคงอยู่ในชั้นเชิงคุณจะต้องทำสิ่งอื่นก่อน

ขั้นแรกให้ใช้กรรมสิทธิ์ของ Cygwin Directories / Files

จะมีบัญชีผู้ใช้บางส่วนที่เชื่อมโยงกับไดเรกทอรีและไดเรกทอรีย่อย / ไฟล์ที่มีลักษณะคล้ายกัน S-1-2-34-1234567890-1234567890-1234567890-123

บัญชีผู้ใช้

ลบสิ่งเหล่านี้และเป็นเจ้าของด้วยบัญชีผู้ใช้ของคุณเอง

  1. เข้าถึงPropertiesไดเรกทอรี cygwin
  2. คลิกAdvancedที่Securityแท็บ
  3. Changeเจ้าของกับตัวคุณเอง คุณสามารถพิมพ์ชื่อหรือที่อยู่อีเมลที่เกี่ยวข้อง
  4. Remove ผู้ใช้ที่ไม่รู้จักใด ๆ จากรายการ
  5. คลิก Enable Inheritance
  6. ตรวจสอบ `แทนที่รายการสิทธิ์วัตถุลูกทั้งหมดด้วยรายการสิทธิ์ที่สืบทอดได้จากวัตถุนี้
  7. คลิกOKที่ด้านล่างแล้วYesไปที่กล่องโต้ตอบ

กล่องโต้ตอบความปลอดภัยของ Windows

จากนั้นใน Cygwin ให้เปลี่ยนกลุ่มผู้ใช้ของไฟล์หลักทั้งหมด

จากคำตอบของร้อยเอ็ดด่าน :

ระหว่างการติดตั้ง cygwin ไฟล์ทั้งหมดไม่มีอยู่ในกลุ่ม ls -alคุณสามารถตรวจสอบได้โดยการทำ

  1. เปิด Cygwin และไปที่.sshไดเรกทอรี -cd ~/.ssh
  2. เรียกใช้chgrp Users *- นี่จะช่วยให้คุณchmodรับไฟล์ได้อย่างเหมาะสม
  3. chmod 400 *สุดท้ายวิ่ง 600 จะใช้งานได้

ทดสอบเพื่อดูว่าทำงานหรือไม่

เพียง ssh ไปยังเซิร์ฟเวอร์ที่คุณเลือก ในกรณีของฉันมันBitbucket

ผลลัพธ์ที่ดี:

$ ssh hg@bitbucket.org
PTY allocation request failed on channel 0
conq: logged in as simonhartcher.

You can use git or hg to connect to Bitbucket. Shell access is disabled.
Connection to bitbucket.org closed.

ผลลัพธ์ไม่ดี:

$ ssh hg@bitbucket.org
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0755 for '/home/Simon/.ssh/id_dsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /home/Simon/.ssh/id_dsa
Permission denied (publickey).

2
ด้วย OpenSSH สำหรับ Windows (ไม่ใช่ cygwin) ฉันได้รับ chgrp Users * "C: /opscode/chef/embedded/bin/chgrp.exe": กลุ่มที่ไม่ถูกต้อง `ผู้ใช้ '
Jonathan

0
  1. id_rsa -> คลิกขวา -> Properties -> ความปลอดภัย -> แก้ไข
  2. ลบกลุ่มและผู้ใช้ทั้งหมด (อย่ากด OK หรือ Apply)
  3. เพิ่ม -> ป้อนชื่อผู้ใช้ปัจจุบันของคุณ -> ตรวจสอบชื่อ
  4. อนุญาตให้ "ควบคุมทั้งหมด"
  5. ใช้

(Windows 10 Pro)

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