Menghubungkan ke github menggunakan Putty SSH key yang dihasilkan pada Windows 7


20

Pada instal Windows 7 Enterprise yang masih asli:

  1. Pasang Putty 0,62
  2. Buat pasangan kunci publik / pribadi dengan puttygen.exe
  3. Tambahkan kunci publik untuk menempel ke OpenSSH diotorisasi_keys ke akun github
  4. Tambahkan kunci pribadi ke kontes
  5. Instal msysgit 1.7.8 dengan opsi berikut:
    • Gunakan Git dari Windows Command Prompt
    • Gunakan (Tortoise) Plink yang diarahkan untuk memperbaiki plink.exe
  6. Pastikan sidik jari github ditambahkan ke know_hosts dengan menghubungkan ke github.com di Putty dan menerima sidik jari
  7. Edit ~/.ssh/configuntuk membaca:

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

ssh -vvvT git@github.commemberikan: http://pastebin.com/Tu3Fc6nJ . Perhatikan bahwa saya diminta memasukkan frasa sandi meskipun berhasil dimuat ke dalam kontes.

Saya sudah mencoba: chmod 700 ~/.ssh; chmod 600 ~/.ssh/*dari dalam Git Bash tetapi tidak ada efek yang diverifikasi oleh ls -l.

Saya harus mencatat bahwa saya memiliki pengaturan yang tepat ini bekerja pada instalasi Windows 7 sebelumnya. Semuanya identik sejauh yang saya tahu.

Apa yang berhasil adalah menghasilkan kunci dari dalam Git Bash. Namun, saya tidak bisa menambahkan kunci-kunci itu ke dalam kontes, yang sangat menyebalkan. Akibatnya, tampaknya setiap upaya untuk menggunakan kunci yang dihasilkan oleh Putty tidak berhasil.

Adakah wawasan tentang apa yang mencegah ini bekerja berdasarkan pada log? Terima kasih sebelumnya.


dengan -vT, tolong, kurangi tingkat verbositas
Lazy Badger

Jawaban:


20

Anda membingungkan dua program yang sepenuhnya terpisah: Putty dan OpenSSH.

  • plinkdan Pageant adalah bagian dari Putty. The sshPerintah merupakan bagian dari OpenSSH. Tidak jelas program mana yang digunakan oleh Git; Anda perlu memeriksa %GIT_SSH%variabel lingkungan untuk itu.

  • Program menggunakan protokol agen yang berbeda; OpenSSH tidak dapat menggunakan Kontes Putty; ia memiliki sendiri ssh-agent(yang sayangnya agak rumit untuk digunakan di Windows).

  • Putty dan plinksimpan pengaturan sesi di registri, dapat diedit di antarmuka Putty. Mereka tidak menggunakan apa pun di dalamnya ~/.ssh/; direktori ini hanya digunakan oleh OpenSSH.

  • Format kunci pribadi yang digunakan oleh OpenSSH dan Putty berbeda; Anda tidak dapat menggunakan .ppkkunci dengan OpenSSH. Jika Anda membuat kunci di PuTTYgen, Anda harus menggunakan perintah "Ekspor → 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:'
    

Saya menyadari perbedaannya dan seperti yang ditunjukkan dalam posting asli, git telah diatur untuk menggunakan plink ketika diinstal. Saya telah memverifikasi bahwa ini telah mengubah variabel lingkungan yang tepat untuk mengarah ke plink.exe. Saya ingin menggunakan kunci Putty (dan ini telah bekerja di masa lalu!) Dengan git, dan fakta bahwa itu tidak berfungsi meskipun menggunakan plink itu aneh ...
Radu

Pada dasarnya, sekarang saya bisa membuatnya bekerja dengan kunci OpenSSH, tetapi tidak dengan kunci Putty. Saya telah mencoba menginstal ulang Putty dan juga menghasilkan kunci baru. Tampaknya itu bukan masalah. Tahu apa itu?
Radu

1
@ Radu: plinktidak mendukung format kunci OpenSSH. Jika versi Anda melakukannya, maka itu bukan yang plinkAnda gunakan; itu sesuatu yang lain.
grawity

1
@ Radu: Juga, pos asli menunjukkan kebalikan dari klaim Anda. Pertama Anda membuat kunci dengan PuTTYgen dan memuatnya ke Pageant, tetapi kemudian Anda pergi dengan mengkonfigurasi OpenSSH dan mengeluh bahwa " sshmeminta frase sandi meskipun dimuat ke Pageant". Anda sedang membingungkan dua program.
grawity

Saya tidak pernah mengatakan bahwa plink mendukung OpenSSH - Git Bash, namun, karena secara default menggunakan OpenSSH. Membaca kembali, Anda benar, saya telah membingungkan hal-hal karena seperti yang Anda katakan, ~/.ssh/configtidak digunakan oleh Putty. Namun, saya ingin menegaskan kembali bahwa GIT_SSH diarahkan untuk melakukan plink, namun jika saya memodifikasi file konfigurasi ssh untuk OpenSSH perubahannya tercermin dalam Git Bash ketika mencoba terhubung ke github. Pada dasarnya, saya percaya bahwa variabel lingkungan GIT_SSH diabaikan dan saya kira itu adalah sesuatu yang spesifik untuk OS saya. Saya akan mencoba gambar baru besok.
Radu

20

Saya telah menyusun panduan langkah demi langkah untuk mendapatkan setup Git untuk windows menggunakan aplikasi Plink Putty untuk otentikasi SSH.

Ikuti di bawah ini:


Mendirikan

  1. Instal putty.zip yang tersedia di Halaman Unduhan Putty atau Anda dapat mengunduhnya secara terpisah.

    • Putty: putty.exe (atau dengan FTP )

      Klien SSH dan Telnet itu sendiri.

    • Plink: plink.exe (atau dengan FTP )

      Antarmuka baris perintah ke bagian belakang Putty.

    • Kontes: pageant.exe (atau dengan FTP )

      Agen otentikasi SSH untuk Putty, PSCP, PSFTP, dan Plink.

    • PuTTYgen: puttygen.exe (atau dengan FTP )

      Utilitas pembuatan kunci RSA dan DSA.

  2. Hasilkan Kunci RSA dan PPK

    1. Menggunakan Git Bash, gunakan ssh-keygenuntuk menghasilkan sepasang kunci publik / pribadi RSA. Informasi lebih lanjut tentang cara melakukan ini dapat ditemukan pada artikel Menghasilkan kunci SSH resmi .
    2. Di PuTTYgen, impor ~/.ssh/id_rsakunci (pribadi) Anda yang ada , melalui ConversionsImport key.
    3. Simpan kunci yang diimpor melalui Save private keytombol sebagai ~/.ssh/id_rsa.ppk.
    4. Anda sekarang harus memiliki kunci berikut di ~/.sshdirektori Anda :

      • id_rsa: Kunci RSA pribadi (OpenSSH)
      • id_rsa.pub: Kunci RSA publik (OpenSSH)
      • id_rsa.ppk: Kunci pribadi (Putty)
  3. Instal Git untuk Windows .

    Pastikan Anda memilih menggunakan Plink.

    Pengaturan git

    Catatan: Jika Anda sudah menginstal Git, Anda bisa menjalankan installer lagi dan mengatur Plink menjadi aplikasi SSH default Anda.

  4. Tetapkan jalur Lingkungan Anda.

    1. Di Panel Kontrol , navigasikan ke tampilan Sistem.
    2. Pilih pengaturan sistem Lanjut .
    3. Di jendela System Properties , klik tab Advanced .
    4. Klik Environment variables….
    5. Tambahkan variabel Sistem berikut (jika belum disetel):

      • GIT_HOME: C:\Program Files\Git
      • GIT_SSH: C:\Program Files (x86)\PuTTY\plink.exe
    6. Tambahkan direktori biner Git ke jalur sistem.

      • Path: %Path%;%GIT_HOME%\bin
  5. Buka Pageant dan muat kunci ppk yang terletak di ~/.ssh/id_rsa.ppk.

    Catatan: Setelah Pageant dimulai, Anda dapat mengklik ikonnya di baki sistem yang terletak di bilah tugas, di sebelah waktu, di sebelah kanan.

  6. Buka Putty dan hubungkan untuk menguji koneksi Anda melalui SSH dan tambahkan kunci server sebagai host yang dikenal.

    Dempul

    Contoh nama host:

    • GitHub: git@github.com:22 (atau melalui ssh-agent ssh -Tv git@github.com)
    • BitBucket: git@bitbucket.org:22 (atau melalui ssh-agent ssh -Tv git@bitbucket.org)
  7. Mulai Git Bash.

    Anda harus dapat mendorong dan menarik dari host jarak jauh Anda tanpa memasukkan kata sandi setiap kali.


Jalan pintas

Anda dapat menempatkan pintasan di direktori startup Anda untuk memuat kunci Anda secara otomatis setiap kali Anda masuk ke akun Windows Anda.

Melalui Skrip Batch

Ide ini terinspirasi oleh jawaban untuk pertanyaan ini:

Pengguna Super: Cara membuat pintasan dari 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

Melalui Windows Explorer

  1. Arahkan ke direktori startup di Windows Explorer.

    • Startup/Direktori pengguna (lebih disukai) terletak di:

      %AppData%\Microsoft\Windows\Start Menu\Programs\Startup
      
    • Startup/Direktori Semua Pengguna terletak di:

      %ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup
      
  2. Klik kanan di dalam folder dan pilih NewShortcut

  3. Dalam dialog Buat Pintasan , masukkan informasi berikut.

    • Lokasi: "C:\Program Files (x86)\PuTTY\pageant.exe"
    • Nama: Pageant Autoload
  4. Klik kanan pintasan baru dan pilih Propertiesdari menu konteks.

  5. Ubah bidang-bidang berikut di bawah tab Shortcut :

    • Target: "%PROGRAMFILES(x86)%\PuTTY\pageant.exe" id_rsa.ppk
    • Mulai di: %USERPROFILE%\.ssh

     
    Catatan:

    1. Jika Anda menggunakan OS Windows 32-bit, Anda harus menggunakan %PROGRAMFILES%variabel lingkungan alih-alih %PROGRAMFILES(x86)%.

    2. Jika Anda menempatkan pintasan di direktori startup Semua Pengguna, pastikan bahwa pengguna saat ini memiliki id_rsa.ppkkunci di ~/.sshdirektori mereka atau kunci tidak akan memuat secara otomatis.


Kata penutup

Itu dia. Lain kali Anda masuk ke profil Windows Anda, Anda akan disambut dengan permintaan Pageant untuk memasukkan kata sandi untuk kunci Anda. Jika Anda tidak menetapkan kata sandi pada kunci Anda, maka kunci Anda harus dimuat secara otomatis tanpa prompt.

Jika Anda tidak yakin apakah kunci Anda dimuat, lihat kunci saat ini di Pageant dengan memilih Tombol Lihat dari menu konteks untuk Pageant di baki sistem.


3
Instruksi terperinci yang luar biasa! +1 dari saya!
Pimp Juice,

Mengimpor kunci pribadi di puttygen adalah tautan saya yang hilang
Saurabh Kumar

Harus membuat koneksi di Putty untuk mengaktifkan langkah dalam proses setup dari gambar.
user46193

Fantastis! Saya punya masalah similair dengan gitlab.com dan ini menyelesaikannya. Git menggunakan dempul sedangkan kunci yang saya unggah adalah OpenSSH. Terima kasih!
jgalak

4

Dalam bahasa Inggris yang sederhana

debug3: Bukan file kunci RSA1 /c/Users/Radu/\.ssh¡github.ppk.

debug2: key_type_from_name: tipe kunci tidak dikenal 'PuTTY-User-Key-File-2

Puttygen dapat membuat kunci yang berbeda, Github menginginkan SSH1-RSA (?, Saya menggunakan kunci ssh2 dengan Pageant di github)

Menambahkan

Lihat juga posting ini tentang men-debug masalah kontes dengan 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 sudah usang dan memiliki banyak celah keamanan. Github tidak menggunakannya.
grawity

Ini setara dengan 'ssh -T git@github.com' sayangnya hilang dari dokumentasi github howto. Terima kasih telah memposting.
Epu
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.