การเชื่อมต่อกับ GitHub โดยใช้ PuTTY สร้างคีย์ SSH ใน Windows 7


20

ในการติดตั้ง Windows 7 Enterprise ที่เก่าแก่อย่างอื่น:

  1. ติดตั้ง PuTTY 0.62
  2. สร้างคู่คีย์สาธารณะ / ส่วนตัวด้วย puttygen.exe
  3. เพิ่มกุญแจสาธารณะสำหรับการวางใน OpenSSH authorized_keys ไปยังบัญชี github
  4. เพิ่มคีย์ส่วนตัวให้กับผู้เข้าประกวด
  5. ติดตั้ง msysgit 1.7.8 ด้วยตัวเลือกต่อไปนี้:
    • ใช้ Git จากพรอมต์คำสั่งของ Windows
    • ใช้ (เต่า) Plink ชี้ไปที่การแก้ไข plink.exe
  6. ตรวจสอบให้แน่ใจว่ามีการเพิ่มลายนิ้วมือ Github ใน know_hosts โดยเชื่อมต่อกับ github.com ใน PuTTY และยอมรับลายนิ้วมือ
  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 ทุบตี ls -lแต่ไม่มีผลตรวจสอบตาม

ฉันควรทราบว่าฉันมีการตั้งค่าที่แน่นอนนี้ทำงานในการติดตั้ง Windows 7 ก่อนหน้า ทุกอย่างเหมือนกันเท่าที่ฉันสามารถบอกได้

การทำงานคือการสร้างกุญแจจากภายใน Git Bash อย่างไรก็ตามฉันไม่สามารถเพิ่มคีย์เหล่านั้นลงในการประกวดซึ่งเป็นความเจ็บปวดอย่างมาก ดูเหมือนว่าความพยายามในการใช้กุญแจที่สร้างขึ้นโดย PuTTY นั้นไม่สมควร

ข้อมูลเชิงลึกเกี่ยวกับสิ่งที่ป้องกันไม่ให้สิ่งนี้ทำงานได้ตามบันทึก ขอบคุณล่วงหน้า.


ด้วย -vT โปรดลดระดับคำฟุ่มเฟื่อยน้อยลง
Lazy Badger

คำตอบ:


20

คุณกำลังสับสนสองโปรแกรมแยกกันทั้งหมด: PuTTY และ OpenSSH

  • plinkและ Pageant เป็นส่วนหนึ่งของ PuTTY sshคำสั่งเป็นส่วนหนึ่งของ OpenSSH มันไม่ชัดเจนว่าโปรแกรมใดที่ Git ใช้อยู่ คุณต้องตรวจสอบ%GIT_SSH%ตัวแปรสภาพแวดล้อมสำหรับสิ่งนั้น

  • โปรแกรมใช้โปรโตคอลตัวแทนที่แตกต่างกัน OpenSSH ไม่สามารถใช้การประกวดของ PuTTY ได้ มันมีของตัวเองssh-agent(ซึ่งน่าเสียดายที่ค่อนข้างซับซ้อนในการใช้บน Windows)

  • PuTTY และplinkเก็บการตั้งค่าเซสชันในรีจิสตรีสามารถแก้ไขได้ในส่วนต่อประสานของ PuTTY พวกเขาไม่ได้ใช้อะไรใน~/.ssh/; ไดเรกทอรีนี้ใช้โดย OpenSSH เท่านั้น

  • รูปแบบคีย์ส่วนตัวที่ใช้โดย OpenSSH และ PuTTY นั้นแตกต่างกัน คุณไม่สามารถใช้.ppkกุญแจกับ OpenSSH หากคุณสร้างคีย์ใน 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 ฉันต้องการใช้ปุ่ม PuTTY (และสิ่งนี้ทำงานในอดีต!) กับคอมไพล์และความจริงที่ว่ามันไม่ทำงานแม้จะมีการใช้ plink เป็นเรื่องแปลก ...
Radu

ที่สำคัญตอนนี้ฉันสามารถทำให้มันใช้งานได้กับปุ่ม OpenSSH แต่ไม่ใช่กับปุ่ม PuTTY ฉันได้ลองติดตั้ง PuTTY อีกครั้งและสร้างรหัสใหม่ ดูเหมือนว่าจะไม่มีปัญหา มีความคิดอะไรที่จะเป็น?
Radu

1
@Radu: plinkไม่รองรับรูปแบบแป้น OpenSSH หากเวอร์ชั่นของคุณเป็นเช่นนั้นแสดงว่าplinkคุณไม่ได้ใช้ มันเป็นอย่างอื่น
grawity

1
@Radu: นอกจากนี้โพสต์ต้นฉบับบ่งบอกถึงการเรียกร้องของคุณ ก่อนอื่นคุณต้องสร้างคีย์ด้วย PuTTYgen และโหลดไปที่ Pageant แต่จากนั้นคุณจะไปกำหนดค่า OpenSSH และบ่นว่า " sshพร้อมท์สำหรับวลีรหัสผ่านแม้จะถูกโหลดเข้าประกวด" คุณกำลังสับสนทั้งสองโปรแกรม
grawity

ฉันไม่เคยพูดว่า plink สนับสนุน OpenSSH - Git Bash อย่างไรก็ตามเนื่องจากโดยค่าเริ่มต้นแล้วมันใช้ OpenSSH อ่านกลับคุณถูกต้องฉันได้รับสิ่งที่สับสนตั้งแต่ที่คุณพูด~/.ssh/configไม่ได้ใช้โดย PuTTY อย่างไรก็ตามฉันอยากจะย้ำว่า GIT_SSH ชี้ไปที่ plink แต่ถ้าฉันแก้ไขไฟล์ ssh config สำหรับ OpenSSH การเปลี่ยนแปลงจะแสดงใน Git Bash เมื่อพยายามเชื่อมต่อกับ GitHub โดยพื้นฐานแล้วฉันเชื่อว่าตัวแปรสภาพแวดล้อม GIT_SSH กำลังถูกเพิกเฉยและฉันคิดว่ามันเป็นสิ่งที่เฉพาะกับระบบปฏิบัติการของฉัน ฉันจะลองดูภาพลักษณ์ใหม่ในวันพรุ่งนี้
Radu

20

ฉันได้รวบรวมคำแนะนำทีละขั้นตอนเพื่อรับการตั้งค่า Git สำหรับ windows โดยใช้แอพพลิเคชั่น Plink ของ PuTTY สำหรับการตรวจสอบความถูกต้องของ SSH

ทำตามด้านล่าง:


ติดตั้ง

  1. ติดตั้งputty.zipซึ่งมีให้ที่PuTTY Download Pageหรือคุณสามารถดาวน์โหลดทีละตัว

    • PuTTY: putty.exe (หรือโดยFTP )

      ไคลเอ็นต์ SSH และ Telnet

    • Plink: plink.exe (หรือโดยFTP )

      อินเตอร์เฟสบรรทัดรับคำสั่งไปที่ PuTTY back สิ้นสุดลง

    • Pageant: pageant.exe (หรือโดยFTP )

      เอเจนต์การพิสูจน์ตัวตน SSH สำหรับ PuTTY, PSCP, PSFTP และ Plink

    • 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:คีย์ RSA ส่วนตัว (OpenSSH)
      • id_rsa.pub:คีย์ RSA สาธารณะ (OpenSSH)
      • id_rsa.ppk:คีย์ส่วนตัว (PuTTY)
  3. ติดตั้งGit สำหรับ Windows

    ตรวจสอบให้แน่ใจว่าคุณเลือกใช้ Plink

    การตั้งค่า Git

    หมายเหตุ:หากคุณติดตั้ง Git แล้วคุณสามารถเรียกใช้ตัวติดตั้งอีกครั้งและตั้ง Plink ให้เป็นแอปพลิเคชัน SSH เริ่มต้นของคุณ

  4. ตั้งค่าเส้นทางสภาพแวดล้อมของคุณ

    1. ในแผงควบคุมไปที่มุมมองระบบ
    2. เลือกการตั้งค่าระบบขั้นสูง
    3. ในหน้าต่างSystem Propertiesคลิกที่แท็บAdvanced
    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. เปิดประกวดและโหลดคีย์ PPK ~/.ssh/id_rsa.ppkตั้งอยู่ที่

    หมายเหตุ:เมื่อ Pageant เริ่มต้นขึ้นคุณสามารถคลิกที่ไอคอนในถาดระบบที่อยู่ในทาสก์บาร์ถัดจากเวลาทางด้านขวา

  6. เปิด Putty และเชื่อมต่อเพื่อทดสอบการเชื่อมต่อของคุณผ่าน SSH และเพิ่มคีย์ของเซิร์ฟเวอร์เป็นโฮสต์ที่รู้จัก

    ผงสำหรับอุดรู

    ตัวอย่างชื่อโฮสต์:

    • GitHub: git@github.com:22 (หรือผ่านตัวแทน ssh ssh -Tv git@github.com)
    • BitBucket: git@bitbucket.org:22 (หรือผ่านตัวแทน ssh ssh -Tv git@bitbucket.org)
  7. เริ่ม Git Bash

    คุณควรจะสามารถผลักและดึงจากโฮสต์ระยะไกลของคุณโดยไม่ต้องป้อนรหัสผ่านในแต่ละครั้ง


ทางลัด

คุณสามารถวางทางลัดในไดเรกทอรีเริ่มต้นของคุณเพื่อโหลดคีย์ของคุณโดยอัตโนมัติทุกครั้งที่คุณเข้าสู่บัญชี Windows ของคุณ

ผ่าน Batch Script

แนวคิดนี้ได้รับแรงบันดาลใจจากคำตอบของคำถามนี้:

ผู้ใช้ขั้นสูง: วิธีสร้างทางลัดจาก 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 Explorer

  1. นำทางไปยังไดเรกทอรีเริ่มต้นใน Windows Explorer

    • 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. หากคุณกำลังใช้ Windows 32 บิต OS คุณควรใช้ตัวแปรสภาพแวดล้อมแทน%PROGRAMFILES%%PROGRAMFILES(x86)%

    2. หากคุณวางทางลัดไว้ในไดเรกทอรีเริ่มต้นผู้ใช้ทั้งหมดตรวจสอบให้แน่ใจว่าผู้ใช้ปัจจุบันมีid_rsa.ppkรหัสใน~/.sshไดเรกทอรีหรือไม่โหลดอัตโนมัติ


ข้อสังเกตการปิด

ที่นั่นคุณมีมัน ครั้งต่อไปที่คุณลงชื่อเข้าใช้โปรไฟล์ Windows ของคุณคุณจะได้รับการต้อนรับด้วยพรอมต์ Pageant เพื่อป้อนรหัสผ่านสำหรับรหัสของคุณ หากคุณไม่ได้ตั้งรหัสผ่านไว้กับกุญแจของคุณกุญแจของคุณควรถูกโหลดโดยอัตโนมัติโดยไม่ต้องแจ้งให้ทราบ

หากคุณไม่แน่ใจว่าที่สำคัญของคุณโหลดดูคีย์ในปัจจุบันในการประกวดโดยการเลือกดูคีย์จากเมนูบริบทสำหรับการประกวดในถาดระบบ


3
คำแนะนำโดยละเอียดที่ยอดเยี่ยม! +1 จากฉัน!
Pimp Juice IT

การนำเข้าคีย์ส่วนตัวใน PuTTYgen คือการเชื่อมโยงที่ขาดหายไปของฉัน
Saurabh Kumar

ต้องสร้างการเชื่อมต่อใน Putty เพื่อเปิดใช้งานขั้นตอนในกระบวนการตั้งค่าจากรูปภาพ
user46193

Fantastic! ฉันมีปัญหา similair กับ 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 (ฉันใช้ ssh2 keys กับ Pageant on github)

เพิ่ม

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