Windows 7에서 PuTTY 생성 SSH 키를 사용하여 github에 연결


20

그렇지 않은 경우 깨끗한 Windows 7 Enterprise 설치 :

  1. PuTTY 0.62 설치
  2. puttygen.exe로 공개 / 개인 키 페어 만들기
  3. OpenSSH certified_keys에 붙여 넣기위한 공개 키를 github 계정에 추가
  4. 미인 대회에 개인 키 추가
  5. 다음 옵션을 사용하여 msysgit 1.7.8을 설치하십시오.
    • Windows 명령 프롬프트에서 Git 사용
    • plink.exe를 수정하도록 지정된 (Tortoise) Plink 사용
  6. PuTTY에서 github.com에 연결하고 지문을 수락하여 github 지문이 know_hosts에 추가되었는지 확인하십시오.
  7. ~/.ssh/config읽도록 편집하십시오 .

    Host github.com
        User git
        Hostname github.com
        PreferredAuthentications publickey
        IdentityFile ~\.ssh\github.ppk
    

ssh -vvvT git@github.com제공합니다 : http://pastebin.com/Tu3Fc6nJ . 암호에 성공적으로로드되었지만 암호 문구를 입력하라는 메시지가 표시됩니다.

나는 chmod 700 ~/.ssh; chmod 600 ~/.ssh/*Git Bash 내에서 시도했지만에 의해 검증 된 효과는 없었다 ls -l.

이전 Windows 7 설치에서이 정확한 설정을 수행했음을 유의해야합니다. 내가 말할 수있는 한 모든 것이 동일합니다.

작동하는 것은 Git Bash 내에서 키를 생성하는 것입니다. 그러나이 키를 미인 대회에 추가 할 수는 없습니다. 이는 큰 고통입니다. 실제로 PuTTY가 생성 한 키를 사용하려는 시도는 실패한 것 같습니다.

로그를 기반으로 이것이 작동하지 못하게하는 원인에 대한 통찰력이 있습니까? 미리 감사드립니다.


-vT로 제발, 덜 자세한 레벨
Lazy Badger

답변:


20

PuTTY와 OpenSSH라는 두 개의 완전히 분리 된 프로그램을 혼동하고 있습니다.

  • plink그리고 미인 대회는 PuTTY의 일부입니다. 이 ssh명령은 OpenSSH의 일부입니다. Git이 어떤 프로그램을 사용하고 있는지는 확실하지 않습니다. %GIT_SSH%환경 변수 를 확인해야 합니다.

  • 프로그램은 다른 에이전트 프로토콜을 사용합니다. OpenSSH는 PuTTY의 미인 대회를 사용할 수 없습니다. 자체적으로 가지고 있습니다 ssh-agent(불행히도 Windows에서는 사용하기가 다소 복잡합니다).

  • PuTTY 및 plink세션 설정을 레지스트리에 저장하고 PuTTY의 인터페이스에서 편집 할 수 있습니다. 그들은 아무것도 사용하지 않습니다 ~/.ssh/; 이 디렉토리는 OpenSSH에서만 사용됩니다.

  • OpenSSH와 PuTTY에서 사용하는 개인 키 형식은 다릅니다. .ppkOpenSSH 에는 키를 사용할 수 없습니다 . PuTTYgen에서 키를 생성 한 경우 "내보내기 → OpenSSH"명령을 사용해야합니다.

    $ ssh -vvvT git@github.com
    OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
    ...
    debug2: key_type_from_name: unknown key type 'PuTTY-User-Key-File-2:'
    

차이점을 알고 있으며 원래 게시물에 표시된 것처럼 git은 설치할 때 plink를 사용하도록 설정되었습니다. 이것이 plink.exe를 가리 키도록 적절한 환경 변수가 변경되었음을 확인했습니다. 나는 퍼티 키를 사용하고 싶습니다 (이것은 과거에 근무하고있다!) 자식으로, 그 사용중인 가용 스루풋에도 불구하고 작동하지 않는 사실은 ... 이상해
라두

본질적으로 지금은 OpenSSH 키로 작동하지만 PuTTY 키로는 작동하지 않을 수 있습니다. PuTTY를 다시 설치하고 새 키를 생성하려고 시도했습니다. 문제가되지 않는 것 같습니다. 그것이 무엇인지 알 수 있습니까?
Radu

1
@Radu : plinkOpenSSH 키 형식을 지원하지 않습니다. 사용중인 버전이 아닌 plink경우 사용 하지 않는 것입니다. 다른 것입니다.
grawity

1
@Radu : 또한 원본 게시물은 소유권 주장의 반대를 나타냅니다. 먼저 PuTTYgen을 사용하여 키를 생성하여 Pageant에로드 한 다음 OpenSSH를 구성하여 " sshPageant에로드 되더라도 암호 문구를 입력하라는 메시지가 표시됩니다 "라고 불평합니다 . 당신은 되는 두 프로그램을 혼동.
grawity

plink가 OpenSSH를 지원한다고 말한 적이 없습니다. 그러나 Git Bash는 기본적으로 OpenSSH를 사용하기 때문에 수행합니다. 당신이 말한 것처럼 혼란스러워 왔습니다 ~/.ssh/config. PuTTY는 사용하지 않습니다. 그러나 GIT_SSH가 plink를 가리키고 있지만 OpenSSH의 ssh 구성 파일을 수정하면 github에 연결하려고 할 때 변경 사항이 Git Bash에 반영됩니다. 본질적으로 GIT_SSH 환경 변수가 무시되고 있다고 생각하며 OS에 고유 한 것으로 가정합니다. 나는 내일 신선한 이미지를 시도 할 것입니다.
Radu

20

SSH 인증을 위해 PuTTY의 Plink 응용 프로그램을 사용하여 Windows 용 Git 설정을 얻는 단계별 가이드를 작성했습니다.

아래를 따르십시오 :


설정

  1. PuTTY 다운로드 페이지 에서 제공되는 putty.zip 을 설치 하거나 개별적으로 다운로드 할 수 있습니다.

    • PuTTY : putty.exe (또는 FTP )

      SSH 및 Telnet 클라이언트 자체

    • Plink : plink.exe (또는 FTP )

      PuTTY 백엔드에 대한 명령 행 인터페이스.

    • 미인 : pageant.exe (또는 FTP )

      PuTTY, PSCP, PSFTP 및 Plink를위한 SSH 인증 에이전트.

    • PuTTYgen : puttygen.exe (또는 FTP )

      RSA 및 DSA 키 생성 유틸리티

  2. RSA 및 PPK 키 생성

    1. Git Bash를 사용 ssh-keygen하여 RSA 공개 / 개인 키 쌍을 생성하는 데 사용하십시오 . 이 작업을 수행하는 방법에 대한 자세한 내용은 공식 SSH 키 생성 기사를 참조하십시오.
    2. PuTTYgen에서 → ~/.ssh/id_rsa를 통해 기존 (개인) 키를 가져옵니다 .ConversionsImport key
    3. 가져온 키를 Save private key버튼을 통해로 저장하십시오 ~/.ssh/id_rsa.ppk.
    4. 이제 ~/.ssh디렉토리에 다음 키가 있어야합니다 .

      • id_rsa: 개인 (OpenSSH) RSA 키
      • id_rsa.pub: 공개 (OpenSSH) RSA 키
      • id_rsa.ppk: 개인 (PuTTY) 키
  3. Windows 용 Git을 설치 하십시오 .

    Plink를 사용하도록 선택하십시오.

    힘내 설정

    참고 : 이미 Git을 설치 한 경우 설치 프로그램을 다시 실행하고 Plink를 기본 SSH 애플리케이션으로 설정할 수 있습니다.

  4. 환경 경로를 설정하십시오.

    1. 에서 제어판 , 시스템보기로 이동합니다.
    2. 고급 시스템 설정을 선택하십시오 .
    3. 에서 시스템 등록 정보 창에서 클릭 고급 탭을 선택합니다.
    4. 를 클릭하십시오 Environment variables….
    5. 다음 시스템 변수를 추가하십시오 (아직 설정되지 않은 경우).

      • GIT_HOME: C:\Program Files\Git
      • GIT_SSH: C:\Program Files (x86)\PuTTY\plink.exe
    6. Git 바이너리 디렉토리를 시스템 경로에 추가하십시오.

      • Path: %Path%;%GIT_HOME%\bin
  5. Pageant를 열고에 위치한 ppk 키를로드하십시오 ~/.ssh/id_rsa.ppk.

    참고 : Pageant가 시작되면 오른쪽의 시간 옆에있는 작업 표시 줄에있는 시스템 트레이에서 해당 아이콘을 클릭 할 수 있습니다.

  6. Putty를 열고 연결하여 SSH를 통해 연결을 테스트하고 서버 키를 알려진 호스트로 추가하십시오.

    퍼티

    호스트 이름 예 :

    • GitHub : git@github.com:22 (또는 ssh-agent를 통해 ssh -Tv git@github.com)
    • BitBucket : git@bitbucket.org:22 (또는 ssh-agent를 통해 ssh -Tv git@bitbucket.org)
  7. Git Bash를 시작하십시오.

    매번 암호를 입력하지 않고도 원격 호스트에서 밀고 당길 수 있어야합니다.


지름길

시작 디렉토리에 바로 가기를 배치하여 Windows 계정에 로그인 할 때마다 키를 자동로드 할 수 있습니다.

배치 스크립트를 통해

이 아이디어는이 질문에 대한 답변에서 영감을 얻었습니다.

슈퍼 유저 : CMD에서 바로 가기를 만드는 방법? .

REM |==================================================================|
REM | Pageant Autoload.bat                                             |
REM |                                                                  |
REM | This script creates a shortcut for auto-loading a PPK (key) in   |
REM | Pageant by writing a temporary VB script and executing it. The   |
REM | following information below is added to the shortcut.            |
REM |                                                                  |
REM | Filename  : Pageant Autoload                                     |
REM | Target    : pageant.exe                                          |
REM | Arguments : id_rsa.ppk                                           |
REM | Start in  : ~/.ssh                                               |
REM |==================================================================|
@echo off

REM |==================================================================|
REM | Global Values - Do not touch these!                              |
REM |==================================================================|
SET VBSCRIPT="%TEMP%\%RANDOM%-%RANDOM%-%RANDOM%-%RANDOM%.vbs"
SET STARTUP_DIR=Microsoft\Windows\Start Menu\Programs\Startup
SET STARTUP_USER_DIR=%APPDATA%\%STARTUP_DIR%
SET STARTUP_ALL_USERS_DIR=%PROGRAMDATA%\%STARTUP_DIR% REM Alternative

REM |==================================================================|
REM | Shortcut Values - You can change these to whatever you want.     |
REM |==================================================================|
SET FILENAME=Pageant Autoload.lnk
SET TARGET=%PROGRAMFILES(x86)%\PuTTY\pageant.exe
SET ARGUMENTS=id_rsa.ppk
SET START_IN=%%USERPROFILE%%\.ssh
SET DESCRIPTION=Autoload PuTTY key with Pageant on startup (Ctrl+Alt+S)
SET HOTKEY=CTRL+ALT+S

REM |==================================================================|
REM | Write a new VB script, on the fly; execute and delete it.        |
REM |==================================================================|
ECHO Set oWS = WScript.CreateObject("WScript.Shell") >> %VBSCRIPT%
ECHO sLinkFile = "%STARTUP_USER_DIR%\%FILENAME%" >> %VBSCRIPT%
ECHO Set oLink = oWS.CreateShortcut(sLinkFile) >> %VBSCRIPT%
ECHO oLink.TargetPath = "%TARGET%" >> %VBSCRIPT%
ECHO oLink.Arguments = "%ARGUMENTS%" >> %VBSCRIPT%
ECHO oLink.WorkingDirectory = "%START_IN%" >> %VBSCRIPT%
ECHO oLink.Description = "%DESCRIPTION%"  >> %VBSCRIPT%
ECHO oLink.HotKey = "%HOTKEY%" >> %VBSCRIPT%
ECHO oLink.Save >> %VBSCRIPT%
CScript //Nologo %VBSCRIPT%
DEL %VBSCRIPT% /f /q

Windows 탐색기를 통해

  1. Windows 탐색기에서 시작 디렉토리로 이동하십시오.

    • 사용자 Startup/디렉토리 (선호)는 다음 위치에 있습니다.

      %AppData%\Microsoft\Windows\Start Menu\Programs\Startup
      
    • 모든 사용자 Startup/디렉토리는 다음 위치에 있습니다.

      %ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup
      
  2. 폴더 내부를 마우스 오른쪽 버튼으로 클릭하고 NewShortcut

  3. 에서 바로 가기 만들기 대화 상자에서 다음 정보를 입력합니다.

    • 위치: "C:\Program Files (x86)\PuTTY\pageant.exe"
    • 이름: Pageant Autoload
  4. 새 바로 가기를 마우스 오른쪽 버튼으로 클릭 Properties하고 상황에 맞는 메뉴에서 선택하십시오 .

  5. 바로 가기 탭 에서 다음 필드를 수정 하십시오.

    • 표적: "%PROGRAMFILES(x86)%\PuTTY\pageant.exe" id_rsa.ppk
    • 에서 시작: %USERPROFILE%\.ssh

     
    노트:

    1. 32 비트 Windows OS를 사용하는 %PROGRAMFILES%경우 대신 환경 변수를 사용해야합니다 %PROGRAMFILES(x86)%.

    2. 모든 사용자 시작 디렉토리에 바로 가기를 배치 한 경우 현재 사용자가 디렉토리에 id_rsa.ppk키를 가지고 있는지 확인하십시오 ~/.ssh. 그렇지 않으면 키가 자동로드되지 않습니다.


맺음말

거기 있어요 다음에 Windows 프로필에 로그인하면 호출기 암호를 입력하여 키의 암호를 입력하라는 메시지가 나타납니다. 키에 비밀번호를 설정하지 않은 경우 프롬프트없이 키가 자동으로로드되어야합니다.

키가로드되었는지 확실하지 않은 경우 시스템 트레이의 Pageant 컨텍스트 메뉴에서 View Keys 를 선택하여 Pageant의 현재 키를 봅니다 .


3
훌륭한 자세한 지침! 나에게서 +1!
Pimp Juice IT

puttygen을에서 개인 키를 가져 오기 내 잃어버린 고리 (missing link)이었다
Saurabh 쿠마

그림에서 설정 프로세스 단계를 수행하기 위해 Putty에서 연결을 작성해야합니다.
user46193

환상적인! gitlab.com과 비슷한 문제가있어서 해결했습니다. Git은 퍼티를 사용했지만 내가 업로드 한 키는 OpenSSH 키였습니다. 감사합니다!
jgalak

4

평범한 영어로

debug3 : RSA1 키 파일 /c/Users/Radu/\.ssh\github.ppk가 아닙니다.

debug2 : key_type_from_name : 알 수없는 키 유형 'PuTTY-User-Key-File-2

Puttygen은 다른 키를 만들 수 있습니다 .Github은 SSH1-RSA를 원합니다 (?, github에서 Pageant와 함께 ssh2 키를 사용 합니다)

추가

Github의 미인 문제 디버깅에 대한게시물을 참조하십시오.

>plink.exe -v -agent git@github.com
Looking up host "github.com"
Connecting to 207.97.227.239 port 22
Server version: SSH-2.0-OpenSSH_5.1p1 Debian-5github2
Using SSH protocol version 2
We claim version: SSH-2.0-PuTTY_Release_0.62
Doing Diffie-Hellman group exchange
Doing Diffie-Hellman key exchange with hash SHA-256
Host key fingerprint is:
ssh-rsa 2048 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA1 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA1 server->client MAC algorithm
Pageant is running. Requesting keys.
Pageant has 1 SSH-2 keys
Using username "git".
Trying Pageant key #0
Remote debug message: Forced command: gerve lazybadger
Remote debug message: Port forwarding disabled.
Remote debug message: X11 forwarding disabled.
Remote debug message: Agent forwarding disabled.
Remote debug message: Pty allocation disabled.
Authenticating with public key "github/lazybadger" from agent
Sending Pageant's response
Remote debug message: Forced command: gerve lazybadger
Remote debug message: Port forwarding disabled.
Remote debug message: X11 forwarding disabled.
Remote debug message: Agent forwarding disabled.
Remote debug message: Pty allocation disabled.
Access granted
Opened channel for session
Server refused to allocate pty
Started a shell/command
Hi lazybadger! You've successfully authenticated, but GitHub does not provide shell access.
Server sent command exit status 1
Disconnected: All channels closed

SSH1은 더 이상 사용되지 않으며 수많은 보안 허점이 있습니다. Github는 이것을 사용하지 않습니다.
grawity

'ssh -T git@github.com'에 해당하는 것은 슬프게도 github howto documentation에서 누락되었습니다. 게시 해 주셔서 감사합니다.
Epu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.