Windows 8에서 Cygwin을 통한 git 사용

Windows 8 dev 미리보기 (관련성이 있는지 확실하지 않지만 w7에서 번거 로움이 없었습니다) 컴퓨터를 가지고 있으며 github에서 git repo를 복제하려고합니다.

문제는 ~ / .ssh / id_rsa에 440 개의 권한이 있고 400이어야한다는 것입니다. chmodding을 시도했지만 사용자 권한에 대한 모든 변경 사항이 그룹 권한에 반영됩니다 (예 : 660의 chmod 600 결과). ). 이것은 전체 파일 시스템의 모든 파일에서 일정한 것으로 보입니다.

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이 같은 이유로 작동하지 않습니다



답변

빈 그룹이 필요하지 않습니다.

cygwin을 설치하는 동안 모든 파일은 그룹에 속하지 않습니다. 를 수행하여이를 확인할 수 있습니다 ls -al. 파일에 그룹 ( “없음”)이 없음을 알 수 있습니다. 사용자로 변경하십시오.

chgrp Users *

이 후 당신이 chmod원하는대로 할 수 있습니다 .


답변

지금은 Cygwin 관련 해킹을 발견했습니다.

짧은 버전 :
새 빈 Windows 그룹을 만들고 chgrp를 사용하여 id_rsa 그룹을이 그룹으로 변경 한 다음 그룹에 대한 읽기 / 쓰기 권한을 거부하십시오.

긴 버전 :
수퍼 키를 누르고 lusrmgr.msc를 입력하십시오 . 이 관리자를 사용하여 EMPTY_GROUP 이라는 빈 그룹을 만듭니다.

이제 Cygwin에이 새로운 그룹에 대해 알려야합니다.

mkgroup > /etc/group

다음으로 id_rsa 그룹을 업데이트합니다 :

chgrp EMPTY_GROUP ~/.ssh/id_rsa

마지막으로, Windows 탐색기에서 id_rsa 를 찾은 다음 속성의 보안 탭에서 읽기 / 쓰기 권한을 거부하십시오.

Cygwin이 어떻게 7에서 8을 처리 할 수 ​​있었는지 잘 모르겠지만 문제는 id_rsa 파일의 그룹이 없음이며, 항상 전체 읽기 / 쓰기 액세스 권한이있는 그룹입니다.

또한 이것은 Cygwin과 함께 제공되는 ssh.exe에서만 작동하는 것 같습니다 .git와 함께 ssh를 사용하려면 git 설치의 bin에서 ssh.exe를 Cywgin 설치의 bin 폴더에있는 s로 덮어 쓰십시오. .


답변

승리 8 + Cygwin

Windows 8, 64 비트를 사용하고 있습니다. 다음을 수행하면 나를 위해 해결됩니다.

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


답변

cygwin에서 다음 명령을 입력하십시오.

  • 올바른 그룹을 홈 폴더로 설정하십시오.

    chgrp -Rv HomeUsers /home

  • ssh ID 파일에 대한 올바른 권한을 설정하십시오.

    chmod 600 -Rv ~/.ssh/id*

주의 : 이전에 허용 된 답변이 오래되었습니다. 그룹 이름은 “Users”가 아닌 “HomeUsers”이며 아직 주석을 달 수 없습니다.


답변

그 문제에 대해서도 언급하고 싶습니다. Cygwin을 통해 git을 사용하는 Windows 7 PC에서도 비슷한 문제가 발생했습니다.

인증을 위해 ssh와 키 쌍을 사용하여 로컬 git 리포지토리에서 원격 리포지토리로 변경 사항을 푸시하려고 할 때 git은 파일에 대한 권한 0660 이 너무 열려 있다는 메시지를 던졌습니다.

~ / .ssh / id_rsa.

물론 ssh-agent가이 공개 개인 키를 거부해도됩니다.

그래서이 스레드와 파일의 소유권 및 rwx 패턴 및 ~ / .ssh 폴더와 관련된 다른 스레드에서 언급 한 것을 시도했습니다.

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

그러나 동일한 오류가 계속 발생했습니다.

어떤 이유로 cygwin에서 ssh-agent 프로세스를 종료하고 bourne again shell (bash)에서 다음 명령을 실행해야했습니다.

eval `ssh-agent -s`

원하는 신원을 ssh-agent에 추가하는 것을 잊지 마십시오.

ssh-add ~/.ssh/id_rsa

그런 다음과 같은 유효한 푸시 명령을 반복했습니다.

git push origin master

모든 것이 잘 작동했습니다.


답변

Roi Danton의 답변 을 연장 합니다. 이전 Windows 설치 위에 Windows 8을 설치했지만 이전 cygwin 디렉토리가 그대로 유지되면 먼저 몇 가지 다른 작업을 수행해야합니다.

먼저 Cygwin 디렉토리 / 파일의 소유권을 가져옵니다

디렉토리 및 하위 디렉토리 / 파일과 관련된 일부 사용자 계정이 있습니다. S-1-2-34-1234567890-1234567890-1234567890-123

사용자 계정

이를 제거하고 자신의 사용자 계정으로 소유권을 가져 오십시오.

  1. Propertiescygwin 디렉토리에 액세스
  2. 클릭 AdvancedSecurity
  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).


답변

  1. id_rsa-> 오른쪽 클릭-> 속성-> 보안-> 편집
  2. 모든 그룹 및 사용자 제거 (확인 또는 적용을 누르지 마십시오)
  3. 추가-> 현재 사용자 이름 입력-> 이름 확인
  4. “모든 권한”허용
  5. 대다

(Windows 10 Pro)