Git GUI 또는 ssh-keygen을 사용하는 SSH 개인 키 권한이 너무 열려 있습니다.
최근에 github을 복제하거나 푸시 할 수 없었으며 근본 원인을 찾으려고합니다.
이것은 창문에 있습니다
나는 cygwin + git과 msysgit을 가지고 있습니다.
Msysgit은 다음 옵션으로 설치되었습니다 :
- OpenSSH
- Windows 명령 프롬프트에서 Git 사용
그것은 git을 사용할 수있는 4 가지 환경을 제공합니다.
- Windows cmd 프롬프트
- 파워 쉘
- 힘내 배쉬
- 시그윈
어떻게 든 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
이것은 내 c : \ users \ ben \ 폴더의 .ssh 폴더를 사용하며 msysgit에서 사용됩니다. .ssh 폴더가 다른 위치에 있기 때문에 cygwin이 작동한다고 생각하지만 그 이유를 모르겠습니다.
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에서 해당 파일에 대한 권한을 수정하려고 시도했지만 cygwin이 자신의 권한을 올바르게보고하지만 gitbash는하지 않습니다 : alt text http://cdn.cloudfiles.mosso.com/c54102/app7962031255448924.jpg
이 권한을 실제로 수정하는 방법에 대한 아이디어가 있습니까?
전체 디렉토리에 대한 권한을 변경했습니다. Splash에 동의합니다. 디렉토리의 원래 권한이 무엇인지 기억할 수 있으면 다시 설정하고 다음을 수행하려고합니다.
cd ~/.ssh
chmod 700 id_rsa
.ssh 폴더 안에 있습니다. 그러면 소유자 (귀하) 만 id_rsa 파일을 rwx (읽기, 쓰기, 실행)로 설정하고 다른 사람은 액세스 할 수 없습니다.
원래 설정이 무엇인지 기억하지 못하는 경우 새 사용자를 추가하고 해당 사용자에 대한 SSH 키 세트를 작성하여 기본 권한이있는 새 .ssh 폴더를 작성하십시오. 새 .ssh 폴더를 .ssh 폴더 및 파일을 재설정 할 수있는 권한에 대한 참조로 사용할 수 있습니다.
그래도 문제가 해결되지 않으면 msysgit을 제거하고 컴퓨터의 모든 .ssh 폴더를 삭제하고 (안전한 방법으로) msysgit을 원하는 설정으로 다시 설치하고 완전히 다시 시작하십시오. 이미 시도했습니다).
편집 : Google을 통해이 링크를 찾았습니다 . "경고 : 보호되지 않은 개인 키 파일 수정!" 리눅스 에서 리눅스를 겨냥했지만 liunx 권한 등을 말하고 있기 때문에 도움이 될 수 있습니다.
cygwin의 chmod에 버그가 있습니다. 다음을 참조하십시오 :
https://superuser.com/questions/397288/using-cygwin-in-windows-8-chmod-600-does-not-work-as-expected
chgrp -Rv Users ~/.ssh/*
chmod -vR 600 ~/.ssh/id_rsa
* nix 시스템의 경우 명백한 수정은 chmod 600 id_rsa
forc이지만 Windows 7에서는 잠시 벽에 머리를 대고 있어야했지만 마법의 해결책을 찾았습니다.
내 컴퓨터 / 마우스 오른쪽 버튼으로 클릭 / 속성 / 고급 시스템 설정 / 환경 변수로 이동하여 변수를 삭제 하십시오 (시스템 및 사용자 환경 모두에서 가능).
사이 윈
기본적으로 git windows 바이너리에서 사용하는 mingw32의 결함으로 모든 파일 (644)과 모든 폴더 (755)를 항상 볼 수 있습니다. 환경 변수를 제거해도 해당 동작이 변경되지는 않지만 ssh.exe가 문제를 무시하도록 지시합니다. 탐색기 보안 설정을 통해 id_rsa에 대한 적절한 권한을 설정 한 경우 (실제로는 "시스템"이 아니라 "관리자"가 아닌 "모두"가 아닌 다른 사용자가 필요 없음) , 여전히 안전합니다.
이제, 왜 mingw32, Cygwin에서와 다른 시스템을 만들 것입니다 어떤 Cygwin에서 환경 변수의 사용을, 내 능력 밖입니다. 나에게 벌레처럼 보인다.
XP를 사용 중이므로 Git Bash가 Github와 통신 할 수있게되었습니다 (많은 좌절 후).
- 복사
c:\cygwin\bin\cyg*
(~ 50 개 파일)c:\Program Files\Git\bin\
- 복사
c:\cygwin\bin\ssh.exe
에c:\Program Files\Git\bin\
(덮어 쓰기) 다음을 포함하는 파일
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"
(선택 사항)
ssh -v git@github
디버깅 된 연결을 보는 데 사용 합니다.- 밀어보세요!
배경 : 일반적인 문제는이 두 가지의 조합입니다.
- BUG : mingw32는 모든 파일을 644 (기타 / 그룹에서 읽을 수있는)로 인식하며 mingw32, cygwin 또는 Windows에서 시도한 아무것도 수정하지 못했습니다.
- mingw32의 SSH 버전은 개인 키 (일반적으로 서버의 좋은 정책)를 허용하지 않습니다.
여기에 있는 Git을 사용하는 Windows 7의 경우 (Cygwin이 아닌 MinGW를 사용함) :
- Windows 탐색기에서 id_rsa 파일을 마우스 오른쪽 단추로 클릭하고 특성을 선택하십시오.
- 보안 탭을 선택하고 편집 ...을 클릭하십시오.
- 관리자를 제외한 모든 그룹에 대해 모든 권한 옆의 거부 상자를 선택하십시오.
- 힘내 명령을 다시 시도
속성에서 파일 권한을 변경하고 상속을 비활성화하고 chmod 400을 실행해도 효과가 없었습니다. 개인 키 파일에 대한 권한은 다음과 같습니다.
-r--r ----- 1 alex 없음 1766 3 월 8 일 13:04 /home/alex/.ssh/id_rsa
그런 다음 그룹이 없음임을 알았으므로 방금 실행했습니다.
chown alex : 관리자 ~ / .ssh / id_rsa
그런 다음 chmod 400으로 권한을 성공적으로 변경하고 git push를 실행할 수 있습니다.
MAC 사용자의 경우 :
터미널에 다음을 입력하여 키 페어 파일의 설정을 변경하십시오.
chmod og-r *filename.pem*
(명령에 올바른 디렉토리 또는 경로 파일 이름이 있는지 확인하십시오).
다음은 Win7의 권한 자체와 관련하여 Windows 파일을 실제로 변경 한 방법입니다. Windows 탐색기에서 ssh 키 찾기 : C : \ Users [your_user_name_here] .ssh \ id_rsa
파일> 속성> 보안 탭> 고급 버튼> 권한 변경을 마우스 오른쪽 버튼으로 클릭하십시오.
이제 사용자 이름이 아닌 모든 사람을 제거하십시오. 여기에는 관리자 및 시스템 사용자가 포함됩니다. 이 시점에서 권한 상속에 대한 대화 상자가 표시 될 수 있습니다.이 파일 만 변경하기를 원하므로 상속하지 않는 옵션을 선택하십시오.
확인을 클릭하고 완료 될 때까지 저장하십시오.
내 창문이 명령 줄에서 파일 권한을 변경하지 않기 때문에 며칠 동안 싸웠습니다. 이렇게하면 흥미로운 결과를 초래할 수있는 흥미로운 해결 방법을 사용하는 대신 실제로 수행됩니다.
나는 그것을 해결한다.
chmod 400 ~/.ssh/id_rsa
도와 드리겠습니다. 행운을 빕니다.
최근에 문제를 겪고 이것이 최고의 Google 결과 중 하나 인 후에 여기에 토론에 설명 된 간단한 해결 방법으로 칩을 넣을 것이라고 생각했습니다 .http : //code.google.com/p/msysgit/issues/detail? id = 261 # c40
cygwin ssh.exe로 mysys ssh.exe를 덮어 쓰기 만하면됩니다.
최근에 Windows XP에서 동일한 문제가 발생했습니다. ~ / .ssh / id_rsa 파일에서 chmod 700을 시도했지만 작동하지 않는 것 같습니다. ~ / .ssh / id_rsa에서 ls -l을 사용하여 권한을 살펴본 결과 유효 권한이 여전히 644임을 알 수있었습니다.
그런 다음 Windows 권한도 폴더의 권한을 상속 받았으며 폴더는 여전히 모든 사람에게 공개되었습니다. 해결책은 폴더에 대한 권한을 설정하는 것일 수도 있지만 시스템 에이 파일의 상속을 무시하도록 지시하는 것이 더 좋은 방법이라고 생각합니다. 파일 속성의 보안 탭에서 고급 옵션을 사용하고 "상속 권한으로부터 상속 ..."을 선택 취소하면됩니다.
이것은 같은 문제를 가진 다른 사람들에게 도움이 될 수 있습니다.
지금 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는 내 키에 대한 파일 권한도 수정하지 않습니다.
환경:
- NTFS의 Windows Server 2008 SP2
- 사용자 : 관리자
- 환경 변수 :
- PLINK_PROTOCOL = ssh
- HOME = / c / 프로필 / 홈
업데이트 : Git 1.6.5.1도 작동합니다.
이것은 파일을 올바르게 chmod하기에 충분하지 않은 Windows에서 특히 관련된 문제입니다. 환경을 설정해야합니다.
Windows에서 이것은 나를 위해 일했습니다.
cygwin을 설치하십시오.
msysgit ssh.exe를 cygwin의 ssh.exe로 바꾸십시오.
cygwin bash를 사용하여 개인용 키 파일 인 chmod 600은 나를 위해 "id_rsa"였습니다.
여전히 작동하지 않으면 제어판-> 시스템 특성-> 고급-> 환경 변수로 이동하여 다음 환경 변수를 추가하십시오. 그런 다음 3 단계를 반복하십시오.
변수 값
CYGWIN sbmntsec
1 단계를 수행 할 필요는 없지만 두 가지 작업을 수행하여이 문제를 해결할 수있었습니다.
cygwin ssh.exe 및 모든 cyg * .dll에서 Git의 bin 디렉토리로 복사하십시오 (필요하지는 않지만 내가 한 단계이지만 이것만으로는 문제가 해결되지 않았습니다)
http://zylstra.wordpress.com/2008/08/29/overcome-herokus-permission-denied-publickey-problem/ 의 단계를 따르십시오.
~ / .ssh / config 파일에 몇 가지 세부 정보를 추가했습니다.
호스트 heroku.com
호스트 이름 heroku.com
포트 22
IdentitiesOnly 예
IdentityFile ~ / .ssh / id_heroku
TCPKeepAlive 예
사용자 brandon
heroku.com의 전자 메일 주소로 User를 사용해야했습니다. 참고 : 이것은 키를 만들어야한다는 것을 의미하며, 키를 생성하기 위해이 키를 따랐으며 키 이름을 묻는 메시지가 표시되면 id_heroku http : / 를 지정해야합니다 . /help.github.com/win-set-up-git/
- 그런 다음 키를 추가하십시오.
heroku keys : add ~ / .ssh / id_heroku.pub
나를위한 비결은 CYGWIN 환경 변수를 " tty nodosfilewarning " 으로 업데이트하는 것이 었습니다 . 키를 chmod 할 필요조차 없었습니다.
주요 질문에 대한 직접적인 대답은 아니지만 cygwin의 폴더 작동 방식에 대한 질문에 ... cygwin은 일반적으로 모든 "귀하의"파일을 c : \ cygwin \ home \ username의 동등 항목에 저장합니다. 해당 폴더를 Windows 사용자 디렉토리가 아닌 사용자 별 설정으로 처리합니다.
개인 / 공개 키 쌍 (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>
터미널을 종료하고 새 터미널을 다시 시작하십시오.
공개 키를 입력하지 않은 상태에서 "비밀번호 입력"과 같은 의미없는 오류 메시지가 표시되면이 시작 방법을 고려하십시오. 위에서 본 것처럼 복잡하지 않습니다.
Powershell에서 git을 완전히 작동시키지 못했습니다. 그러나 git bash 셸에는 권한 관련 문제가 없었으며 chmod 등을 설정할 필요가 없었습니다. ssh를 Github에 추가 한 후 시작되었습니다.
터미널에 입력 :
chmod -Rf 700 ~/.ssh/
그리고 다시 시도하십시오.
다른 시스템에서 키 파일을 복사 했습니까?
방금 id_rsa
클라이언트 컴퓨터에 파일을 만든 다음 원하는 키를 붙여 넣었습니다. 권한 문제가 없습니다. 설정할 것이 없습니다. 방금 작동했습니다. PuTTYgen을 사용하여 개인 키를 만드는 경우에도 작동합니다.
다른 컴퓨터에서 복사하는 경우 숨겨진 그룹 문제 일 수 있습니다.
두 개의 Windows 8.1 시스템에서 테스트되었습니다. Sublime Text 3을 사용하여 개인 키를 복사하여 붙여 넣습니다. Git Bash 사용 (Git-1.9.4-preview20140611).
Cygwin 설치를 2015 년 2 월경 ( 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
( 다른 질문에 대한 또 다른 대답은 더 많은 맥락을 제공합니다)
@ koby의 답변이 저에게 효과적이지 않으므로 약간 변경합니다.
cd ~/.ssh
chmod 700 id_rsa.pub
이것은 Mac에서 잘 작동합니다.
Windows 10에서 Vagrant 상자에 SSH를 시도하는 것과 동일한 문제가있었습니다. 이전 OpenSSH 버전의 버그 인 것 같습니다. 나를 위해 일한 것 :
- http://www.mls-software.com/opensshd.html 에서 최신 OpenSSH를 설치 하십시오.
- where.exe ssh
(Powershell을 사용하는 경우 ".exe"참고)
다음과 같은 것을 볼 수 있습니다.
C:\Windows\System32\OpenSSH\ssh.exe
C:\Program Files\OpenSSH\bin\ssh.exe
C:\opscode\chefdk\embedded\git\usr\bin\ssh.exe
위의 예에서 최신 OpenSSH는 경로에서 두 번째이므로 실행되지 않습니다.
순서를 변경하려면
- 마우스 오른쪽 버튼으로 Windows 버튼-> 설정-> "시스템 환경 변수 편집"
- "고급"탭에서 "환경 변수 ..."를 클릭하십시오.
- 시스템 변수에서 "경로"를 편집하십시오.
- "C : \ Program Files \ OpenSSH \ bin"및 "Move Up"을 선택하면 맨 위에 나타납니다.
- 확인을 클릭하십시오
- 새 환경 변수가 적용될 수 있도록 콘솔을 다시 시작하십시오.
내 시스템은 bash / cygwin / git / msysgit / maybe-more의 약간 혼란입니다 ...
chmod
키 또는 config
파일 에는 영향을 미치지 않았습니다 .
그런 다음 Windows에서 작동하기로 결정했습니다.
- 권한을 수정해야하는 파일을 마우스 오른쪽 단추로 클릭하십시오.
- 를 선택하십시오
Properties
. Security
탭을 선택 하십시오.Advanced
하단 근처를 클릭하십시오 .- 상단 근처에있는
Change
을 클릭Owner
합니다. - "My-Awesome-Username"을 입력하고 (현재 Windows 사용자 이름으로 변경)을 클릭
Check Names
한 다음을 클릭하십시오OK
. - 아래
Permission entries:
에서 "My-Awesome-Username"이 아닌 각 사용자를 강조 표시하고을 선택하십시오Remove
. "My-Awesome-Username"이 남을 때까지이 과정을 반복하십시오. - "My-Awesome-Username"을 선택하고
Edit
아래를 클릭하십시오 . Type:
상단의가로 설정되어 있는지 확인한Allow
다음 옆의 확인란을 선택합니다Full control
.히트
OK
,Apply
,OK
,OK
.지금 다시 시도하십시오 ...
때때로 mock-bash가 파일 소유권을 제어 할 수없는 것 같습니다. 그것은 mock-bash 스크립트에서 생성되므로 특히 이상합니다. 그림을 이동.
'IT story' 카테고리의 다른 글
배치 스크립트를 통해 프로세스가 실행 중인지 확인하는 방법 (0) | 2020.04.08 |
---|---|
다른 폴더에서 부분 렌더링 (공유되지 않음) (0) | 2020.04.08 |
NameError : 전역 이름 'xrange'가 Python 3에 정의되어 있지 않습니다 (0) | 2020.04.08 |
삼항 연산자는 if-else 블록보다 두 배 느립니다? (0) | 2020.04.08 |
SQL Server에서 열 크기 변경 (0) | 2020.04.08 |