programing

Git GUI 또는 ssh-keygen을 사용하는 SSH 개인 키 사용 권한이 너무 열려 있음

muds 2023. 6. 25. 20:37
반응형

Git GUI 또는 ssh-keygen을 사용하는 SSH 개인 키 사용 권한이 너무 열려 있음

최근에 저는 github을 복제하거나 푸시할 수 없어서 근본 원인을 찾고 있습니다.

이것은 창문에 있습니다.

나는 msysgit 뿐만 아니라 cygwin + git도 가지고 있습니다.

Msysgit은 다음 옵션과 함께 설치되었습니다.

  • OpenSSH
  • Windows 명령 프롬프트에서 Git 사용

Git을 사용할 수 있는 4가지 환경을 제공합니다.

  • 윈도우즈 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

이 권한을 어떻게 수정할 수 있는지에 대한 아이디어가 있습니까?

당신은 전체 디렉터리에 대한 권한을 변경했습니다. 저는 스플래시가 좋지 않다고 생각합니다.디렉터리에 대한 원래 권한이 무엇인지 기억할 수 있다면 다시 설정하고 다음 작업을 수행합니다.

cd ~/.ssh
chmod 700 id_rsa

.vmdk 폴더 안에 있습니다.그러면 id_rsa 파일이 소유자(사용자)에 대해서만 rwx(읽기, 쓰기, 실행)로 설정되고 다른 모든 사용자에 대해서는 액세스가 0으로 설정됩니다.

원래 설정이 무엇인지 기억할 수 없으면 새 사용자를 추가하고 해당 사용자에 대한 SSH 키 집합을 생성하여 기본 사용 권한을 가진 새 .ssh 폴더를 생성합니다.이 새 .ssh 폴더를 .ssh 폴더 및 파일을 재설정할 수 있는 권한에 대한 참조로 사용할 수 있습니다.

그래도 안 되면 msysgit를 제거하고 컴퓨터의 모든 .ssh 폴더를 삭제한 다음(안전한 조치를 위해) 원하는 설정으로 msysgit을 다시 설치하고 완전히 다시 시작해 보겠습니다(이미 시도했다고는 했지만).

편집됨: 또한 Google을 통해 이 링크를 찾았습니다. -- Linux에서 "경고: 보호되지 않은 개인 파일!" 수정. Linux를 대상으로 하지만, Linux 권한 등에 대해 이야기하고 있기 때문에 도움이 될 수 있습니다.

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물론이죠, 하지만 7번 창문에서 저는 잠시 동안 벽에 머리를 부딪혀야 했지만, 그 후 저는 마법의 해결책을 찾았습니다.

[내 컴퓨터] / [오른쪽 클릭] / [속성] / [고급 시스템 설정] / [환경 변수]로 이동하여 변수를 삭제합니다(시스템 및 사용자 환경 모두에서).

싸이윈

기본적으로 git windows 바이너리에서 사용하는 mingw32의 결함으로, 모든 파일 644와 모든 폴더 755를 항상 볼 수 있습니다.환경 변수를 제거해도 해당 동작은 변경되지 않지만 ssh.exe가 문제를 무시하도록 지시하는 것으로 보입니다.탐색기 보안 설정을 통해 id_rsa에 적절한 사용 권한을 설정하는 경우("모든 사람", "관리자", "시스템"이 아닌 다른 사용자가 있을 필요가 없습니다).없습니다. 당신만), 당신은 여전히 안전할 것입니다.

이제, 왜 cygwin과 다른 시스템인 mingw32가 CYGWIN 환경 변수를 사용하는지 저는 이해할 수 없습니다.저한테는 벌레처럼 보여요.

저는 XP를 사용하고 있으며, 이를 통해 Git Bash가 Github과 통신할 수 있게 되었습니다(많은 좌절 끝에).

  1. 알았다.c:\cygwin\bin\cyg* ~ (~50개 파일) ~c:\Program Files\Git\bin\
  2. 알았다.c:\cygwin\bin\ssh.exec:\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. 한 번 밀어보세요!

배경:일반적인 문제는 다음 두 가지가 결합된 것입니다.

  • 버그: mingw32는 모든 파일을 644(기타/그룹이 읽을 수 있음)로 보고, mingw32, cygwin 또는 Windows에서 시도한 어떤 것도 그것을 고칠 수 없었습니다.
  • mingw32의 SSH 버전은 개인 키(일반적으로 서버에서 양호한 정책)를 허용하지 않습니다.

여기에 있는 Git를 사용하는 Windows 7의 경우(Cygwin이 아닌 MinGW를 사용함)

  1. Windows 탐색기에서 id_rsa 파일을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.
  2. 보안 탭을 선택하고 편집...을 클릭합니다.
  3. 관리자를 제외한 모든 그룹에 대해 전체 제어 옆에 있는 거부 상자를 선택합니다.
  4. Git 명령 재시도

Windows 7에서 사용 권한 자체와 관련하여 Windows 파일을 실제로 변경한 방법은 다음과 같습니다. Windows 탐색기에서 SSH 키 찾기:C:\Users[사용자_user_name_here].ssh\id_message

파일을 마우스 오른쪽 버튼으로 클릭 > 속성 >보안 탭 > 고급 단추 > 권한 변경

이제 실제 사용자 이름이 아닌 모든 사용자를 제거합니다.여기에는 관리자 및 시스템 사용자가 포함됩니다.이 파일만 변경하고 싶으므로 상속하지 않는 옵션을 선택하여 사용 권한 상속에 대한 대화를 얻을 수 있습니다.

확인을 클릭하고 완료될 때까지 저장합니다.

제 창이 명령줄에서 파일 권한을 변경하지 않기 때문에 며칠 동안 이 문제와 싸웠습니다.이런 식으로 하면 실제로 수행됩니다. 흥미로운 해결책을 사용하는 대신 이상한 결과를 초래할 수 있습니다.

Properties에서 파일 권한을 변경하고 상속을 비활성화하고 chmod 400을 실행하는 것은 나에게 효과가 없었습니다.개인 키 파일에 대한 권한은 다음과 같습니다.

-r--r----- 1 알렉스 없음 1766 Mar 8 13:04 /home/alex/.ssh/id_rsa

그룹이 없음을 알고 그냥 달려갔습니다.

쵸우 알렉스:관리자 ~ /.ssh/id_rsa

그리고 나서 저는 chmod 400으로 권한을 성공적으로 변경하고 git push를 실행할 수 있었습니다.

MAC 사용자:

터미널에 다음을 입력하여 키 쌍 파일의 설정을 변경합니다.

chmod og-r *filename.pem*

올바른 디렉터리에 있는지 또는 명령의 경로 파일 이름에 있는지 확인하십시오.

최근에 문제를 발견하고 이것이 최고의 구글 결과 중 하나가 된 후에 저는 여기에 토론에 문서화된 간단한 작업에 참여할 것이라고 생각했습니다: http://code.google.com/p/msysgit/issues/detail?id=261#c40 .

단순히 mysyssh.exe를 cygwin ssh.exe로 덮어쓰는 작업만 포함됩니다.

최근에 Windows XP에서 동일한 문제가 발생했습니다.~/.ssh/id_rsa 파일에서 chmod 700을 시도했지만 작동하지 않는 것 같습니다.~/.ssh/id_rsa에서 ls -l을 사용하는 사용 권한을 확인했을 때 유효 사용 권한이 여전히 644임을 알 수 있었습니다.

그러고 나서 Windows 권한도 폴더의 권한을 상속하고 폴더는 여전히 모든 사용자에게 열려 있다는 것을 기억했습니다.폴더에 대한 사용 권한을 설정하는 것도 해결책이 될 수 있지만, 이 파일에 대한 상속을 무시하도록 시스템에 지시하는 것이 더 좋은 방법이라고 생각합니다.이 작업은 파일 속성의 보안 탭에 있는 고급 옵션을 사용하고 상위 사용 권한에서 "상속"을 선택 취소하여 수행할 수 있습니다.."

이것은 같은 문제를 가진 다른 사람들에게 도움이 될 수 있습니다.

실행 중에 해결합니다.

chmod 400 ~/.ssh/id_rsa

도움이 되길 바랍니다.행운을 빌어요.

나는 지금 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의 윈도우즈 서버 2008 SP2
  • 사용자: 관리자
  • 환경 변수:
    • PLINK_PROTOCOL= 모듈
    • HOME=/c/프로파일/홈

업데이트: Git 1.6.5.1도 작동합니다.

이 문제는 Windows(윈도우)에서 특히 관련된 문제로, 파일을 올바르게 chmoding하는 것만으로는 충분하지 않습니다.환경을 설정해야 합니다.

Windows에서는 다음과 같은 이점이 있었습니다.

  1. 사이버윈을 설치합니다.

  2. msysgit ssh.exe를 cygwin의 ssh.exe로 바꿉니다.

  3. cygwin bash를 사용하여 chmod 600 개인 키 파일, 즉 "id_rsa"를 사용했습니다.

  4. 그래도 작동하지 않으면 제어판 -> 시스템 속성 -> 고급 -> 환경 변수로 이동하여 다음과 같은 환경 변수를 추가합니다.그런 다음 3단계를 반복합니다.


    sbmntsec

1단계를 수행하지 않아도 되지만 두 가지 작업을 수행하여 이 문제를 해결할 수 있었습니다.

  1. cygwin ssh.exe 및 모든 cyg*.dll을 Git의 bin 디렉토리에 복사합니다(이것은 필요하지 않을 수도 있지만 내가 취한 단계이지만 이것만으로는 문제를 해결할 수 없었습니다).

  2. http://zylstra.wordpress.com/2008/08/29/overcome-herokus-permission-denied-publickey-problem/ 의 단계를 따릅니다.

    ~/.ssh/config 파일에 몇 가지 세부 정보를 추가했습니다.

.com 은 heroku.com 입니다.
이름.com 은 heroku.com 입니다.
/22
아이덴티티(Identity)는 오직 예()입니다.
파일 ~ ~ /.ssh/id_heroku
TCP KeepAlive »
brandon 사자브 든랜용든▁user

저는 User를 heroku.com 의 이메일 주소로 사용해야 했습니다. 참고: 이것은 키를 만들어야 한다는 것을 의미합니다. 키를 만들기 위해 이것을 따랐고 키의 이름을 묻는 메시지가 나타나면 id_heroku http://help.github.com/win-set-up-git/ 를 지정해야 합니다.

  1. 그런 다음 키를 추가합니다.
    키heroku 파일:~/.heroku/id_heroku. 파일

제가 무슨 속임수를 썼는지는 CYGWIN 환경 변수를 "tty nodos file warning"으로 업데이트한 것입니다.키를 조정할 필요도 없었습니다.

@코비의 대답은 나에게 통하지 않아서, 나는 약간의 변화를 만듭니다.

cd ~/.ssh
chmod 700 id_rsa.pub

이것은 Mac에서 제게 잘 작동합니다.

주요 질문에 대한 직접적인 대답은 아니지만, 싸이그윈의 폴더가 어떻게 작동하는지에 대한 당신의 질문에 대해서는...일반적으로 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>

터미널을 종료하고 새 터미널을 다시 시작합니다.

공용 키를 입력하지 않았는데 "비밀번호 입력"과 같은 의미 없는 오류 메시지가 표시되는 경우 이 시작 방법을 고려하십시오.위에서 보듯이, 그것은 복잡하지 않습니다.

파워셸에서 완벽하게 작동할 수 있는 방법을 찾지 못했습니다.하지만 gitbash 쉘에서는 권한 관련 문제가 없었고, chmod 등을 설정할 필요도 없었습니다.Github에 ssh를 추가한 후에 나는 실행되었습니다.

터미널에 입력:

chmod -Rf 700 ~/.ssh/

그리고 다시 해보세요.

다른 컴퓨터에서 키 파일을 복사했습니까?

방생성항목한을 .id_rsa클라이언트 컴퓨터에 있는 파일에서 원하는 키를 붙여넣었습니다.권한 문제가 없습니다.설정할 것 없음.효과가 있었어요.PuTTYgen을 사용하여 개인 키를 생성하는 경우에도 작동합니다.

다른 컴퓨터에서 복사하는 경우 숨겨진 그룹 문제일 수 있습니다.

두 대의 윈도우즈 8.1 시스템에서 테스트되었습니다.Sublime Text 3을 사용하여 개인 키 복사 및 붙여넣기.Git Bash 사용(Git-1.9.4-preview 20140611).

후 (2015년 2월 Cygwin 설치)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

(다른 질문에 대한 또 다른 대답은 더 많은 맥락을 제공합니다)

Windows 10에서도 동일한 문제가 발생하여 Vagrant 박스에 SSH를 넣으려고 했습니다.이것은 이전 OpenSSH 버전의 버그처럼 보입니다.나에게 효과가 있었던 것:

  1. http://www.mls-software.com/opensshd.html 에서 최신 OpenSSH를 설치합니다.
  2. 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는 경로에서 두 번째이므로 실행되지 않습니다.

순서 변경하기

  1. Windows 버튼 우클릭 -> 설정 -> "시스템 환경변수 편집"
  2. "고급" 탭에서 "환경 변수..."를 클릭합니다.."
  3. 시스템 변수에서 "경로"를 편집합니다.
  4. "C:"를 선택합니다.\프로그램 파일\열기SSH\bin" 및 "위로 이동"을 클릭하여 맨 위에 표시합니다.
  5. 확인 클릭
  6. 새 환경 변수가 적용되도록 콘솔을 다시 시작합니다.

bash/cygwin/git/msysgit/may-more...로 인해 시스템이 약간 엉망입니다.

chmod키에 영향을 미치지 않았습니다.config파일.

그런 다음 Windows에서 접근하기로 결정했습니다.

  1. 권한을 수정해야 하는 파일을 마우스 오른쪽 단추로 클릭합니다.
  2. 선택한다.Properties.
  3. 다음을 선택합니다.Security
  4. 클릭Advanced밑바닥에 가까운
  5. 클릭Change,옆에Owner정상 부근에
  6. "My-Awesome-Username"(내 이름을 현재 Windows 사용자 이름으로 변경)을 입력하고 다음을 클릭합니다.Check Names,그리고나서OK.
  7. 아래Permission entries:"My-Awesome-Username"이 아닌 각 사용자를 강조 표시하고 선택합니다.Remove"My-Awesome-Username"만 남을 때까지 이 작업을 반복합니다.
  8. "My-Awesome-Username"을 선택하고 다음을 클릭합니다.Edit아래.
  9. 다음을 확인합니다.Type:맨 위에 있는Allow다음 옆의 확인란을 선택합니다.Full control.
  10. 히트OK,Apply,OK,OK.

  11. 다시 한 번 시도해 보세요...

때때로 모의배시가 파일 소유권을 통제할 수 없는 것 같습니다.그것은 특히 이상합니다. 모의배시 스크립트에서 생성되기 때문입니다.계산해 보세요.

여기에 제시된 해결 방법(chmod/chgrp/setfacl/windows perms)은 윈도우즈 7 기업 VM에서 msys64와 함께 사용할 수 없었습니다.결국 저는 stdin에 제공된 키로 ssh 에이전트를 사용하여 문제를 해결했습니다.내 항목에 추가.bash_profile이 옵션은 내 로그인에 대한 기본값입니다.

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

이제 ssh 리모컨으로 밀고 당기기를 할 수 있습니다.

언급URL : https://stackoverflow.com/questions/1556119/ssh-private-key-permissions-using-git-gui-or-ssh-keygen-are-too-open

반응형