Bagaimana cara memberi tahu Git untuk Windows di mana menemukan kunci RSA pribadi saya?

487

Pengaturan Git saya berjalan dengan baik di Linux, tetapi ketika saya mencoba mengatur semuanya di Windows (menggunakan Git untuk Windows dan TortoiseGit ), saya tidak tahu di mana harus meletakkan kunci SSH pribadi saya (atau, lebih baik lagi, bagaimana cara mengetahui di sshmana itu terletak). Saya menggunakan opsi ssh.exe standar selama instalasi Git untuk Windows. Pengaturan berjalan dengan baik jika saya mengizinkan otentikasi kata sandi (sebagai pengganti RSA) di server.

binerorganik
sumber
Saya memiliki masalah yang sama, saya dapat ssh ke dalam kotak dev saya menggunakan kunci publik sebagai "root" menggunakan program "Git Bash" yang diinstal dengan "Git Untuk Windows" tetapi saya tidak bisa masuk sebagai "git" dengan saya kunci meskipun saya telah menyalin file "berwenang_kunci" saya dari "root" saya ke pengguna "git" saya dan mengatur pemilik dan izin dengan benar. Mengapa saya tidak bisa masuk sebagai "git" ketika "root" bekerja dengan file "otor_keys" yang sama persis. Alih-alih untuk "git" ia melewatkan semua kunci pribadi, yang sama persis dengan yang bekerja dengan "root" dan meminta kata sandi. Omong-omong, ini adalah server Centos 5.5.
@ fuzzy lollipop: Apakah Anda memiliki izin yang tepat pada file otor_keys pengguna git Anda? Itu harus chmod 600, dan harus dimiliki oleh pengguna git. Jika dimiliki oleh pengguna root, itu tidak akan berfungsi
Dan McClain
ya semua file dan direktori adalah pemilik dan izin yang benar

Jawaban:

486

Untuk Git Bash

Jika Anda menjalankan msysgit (saya berasumsi demikian) dan ingin menjalankan Git Bash (saya merekomendasikannya ke TortoiseGit, tapi saya lebih condong ke CLI daripada GUI sekarang), Anda perlu mencari tahu apa direktori home Anda untuk Git Bash dengan memulai kemudian ketik pwd(Pada Windows 7, itu akan menjadi sesuatu seperti C:\Users\phsrsaya pikir). Saat Anda berada di Git Bash, Anda harus melakukannya mkdir .ssh.

Setelah Anda memiliki direktori home, dan .sshfolder di bawahnya, Anda ingin membuka PuTTYgen dan membuka kunci (file .ppk) yang telah Anda buat sebelumnya. Setelah kunci Anda terbuka, Anda ingin memilih Conversions -> Export OpenSSH keydan menyimpannya HOME\.ssh\id_rsa. Setelah Anda memiliki kunci di lokasi itu, Git Bash akan mengenali kunci dan menggunakannya.

Catatan: Komentar menunjukkan bahwa ini tidak berfungsi dalam semua kasus. Anda mungkin perlu menyalin kunci OpenSSH ke Program Files\Git\.ssh\id_rsa(atau Program Files (x86)\Git\.ssh\id_rsa).

Untuk TortoiseGit

Saat menggunakan TortoiseGit, Anda perlu mengatur kunci SSH melalui petunjuk langkah . Anda perlu melakukan itu untuk setiap repositori yang Anda gunakan dengan TortoiseGit.

Dan McClain
sumber
4
instruksi speedy untuk tortoisegit tidak akan berfungsi sampai Anda memiliki repositori (karena pengaturan konfigurasi 'jarak jauh' tidak muncul kecuali Anda bertindak pada repo), dan Anda mungkin tidak bisa mendapatkan repositori di tempat pertama jika Anda bisa ' t otentikasi diri Anda sendiri untuk mengkloning dari asalnya. Rumit!
Kylotan
43
Dengan GitBash saya menemukan saya harus menyalin ~/.ssh/id_rsafile saya ke Program Files\Git\.ssh\id_rsa- yang agak membingungkan, tetapi sekarang IntelliJ dan Windows cmd dapat mendorong ke git repositori yang menggunakan otentikasi kunci.
JP.
7
Juga. Saya baru saja menginstal git-for-windows, saya menjalankannya dari cmd.exe. Saya perlu memasukkan file id_rsadan id_rsa.pubke dalamnya c:\program files (x86)\Git\.ssh. The .sshdir sudah hadir. Terima kasih, JP.
Cheeso
5
Paragraf kedua adalah emas. :)
Bjørn
4
@ Damon: Seharusnya id_rsatanpa ekstensi. Itu nama file, itu bukan direktori
Dan McClain
107

Menggunakan klien SSH bawaan yang dikirimkan bersama Git untuk Windows, Anda perlu mengatur variabel lingkungan HOME sehingga klien Git SSH dapat menemukan kunci tersebut.

Misalnya, pada instalasi Windows Vista , ini akan dilakukan dengan mengeluarkan setx HOME c:\Users\admin\pada baris perintah.

Itu membuat hari saya dan memperbaiki masalah dengan Git asalkan kunci pribadi Anda tidak dilindungi kata sandi. Jika Anda ingin menggunakan ssh-agent, maka Anda mungkin dapat menjalankan ssh-agent cmd.exe (walaupun saya belum pernah melakukannya) dan ssh-add seperti biasa.

Perhatikan bahwa semua alat Git / SSH seharusnya dijalankan dari cmd.exe agar tidak berkedip jendela.

Jika ini tidak berfungsi dengan benar, menggunakan plink mungkin dapat dicapai dengan mengutak-atik GIT_SSH . Lihat semua tutorial SVN + ssh; ini pada dasarnya adalah pipa yang sama yang perlu Anda siapkan.

Oktober
sumber
16
Ini yang saya cari sejak saya mencoba menggunakan command prompt Windows, bukan git bash.
John Ruiz
Bagus, perbaikan mudah tetapi akan sulit untuk mengetahui tanpa ini!
thaddeusmt
Penting juga untuk tidak memiliki kekosongan antara HOME = dan c: \ ... Solusi Oktober melakukan trik untuk saya. :-)
Lutz
2
The setx HOME c:\Users\admin` command doesn't seems to be working in Git Bash. You have to use cmd` sebagai gantinya.
trejder
2
+1GIT_SSH=c:\pathto\plink.exe
Nick Grealy
54

Anda dapat menentukan lokasi kunci untuk TortoiseGit dengan cara berikut:

  • Buka Jendela Explorer.
  • Buka Menu Konteks dan navigasikan TortoiseGitPengaturan
  • Di jendela yang sekarang dibuka, navigasikan ke GitRemote
  • Tetapkan jalur ke kunci Putty Anda di kotak input yang sesuai.

Tangkapan layar di bawah ini:

Masukkan deskripsi gambar di sini

cepat
sumber
8
Selain itu, jika Anda perlu mengonversi kunci pribadi Anda ke format '.ppk' dari format lain, Anda dapat mengikuti INI
Tariq M Nasim
Itu berhasil untuk saya.
Maxim Eliseev
6
Git> Remote hanya muncul setelah Anda berhasil mengkloning repositori.
Steve Pitchers
5
Solusi yang jauh lebih mudah adalah mengatur semuanya agar berfungsi dengan benar di git (menggunakan openSSH), dan kemudian memberi tahu TortoiseGit untuk menggunakan ssh.exe yang digunakan oleh git. Lihat stackoverflow.com/a/33328628/318317 Dengan begitu, Anda hanya perlu memperbaikinya sekali saja.
Daniel Rose
50

Tidak ada jawaban sebelumnya yang berfungsi untuk saya. Inilah yang pada akhirnya berhasil bagi saya. Ini sebenarnya cukup sederhana, jika Anda tahu apa yang harus diketik. Tidak perlu Putty.

  • Buka prompt Git Bash
  • Ketik 'ssh-keygen'
    • Terima lokasi default
    • Pilih frasa sandi kosong (jadi cukup tekan 'masukkan' ke semua pertanyaan ')
  • Sekarang salin kunci publik ke server Anda, misalnya: scp ~ / .ssh / id_rsa.pub [email protected]: ~

Itulah yang dilakukan komputer Anda sendiri. Sekarang sshke server tujuan, lalu lakukan

mkdir -p ~/.ssh
cd ~/.ssh
cat ../id_rsa.pub >> authorized_keys
rm ../id_rsa.pub

Itu dia! Kamu sudah selesai! Dari Git Bash, lakukan hal berikut untuk menguji:

ssh [email protected] ls

Jika daftar file di direktori home Anda di server Git, dan kemudian selesai!

Untuk GitHub, Anda tidak memiliki akses shell ke server mereka, tetapi Anda dapat mengunggah kunci menggunakan situs web mereka, jadi untuk bit 'sekarang salin ke server Anda', lakukan:

  • Di Git Bash, ketik 'cat ~ / .ssh / id_rsa.pub', pilih hasilnya, dan salin ke clipboard.
  • Di situs web GitHub, buka 'Pengaturan akun', 'Kunci SSH dan GPG', klik 'Kunci SSH Baru', dan rekatkan kunci tersebut.
Hugh Perkins
sumber
8
Jangan membuat kunci tanpa frasa sandi. Ini seperti meletakkan kata sandi Anda di file teks, kecuali bahwa semua orang tahu lokasi default untuk kunci pribadi.
GregB
14
Anda menjawab pertanyaan yang salah. Q adalah cara menunjuk ke kunci pribadi yang ada.
Orangutech
7
@GregB, saya melihatnya seperti ini: server mana pun yang saya buat kunci tanpa kata sandi sama amannya dengan laptop saya, ini merupakan perpanjangan perimeter keamanan laptop saya. Sebenarnya, bahkan tidak, karena direktori home saya dienkripsi ;-) Jadi, ini seaman partisi rumah terenkripsi di laptop saya, yang 'cukup baik' untuk mengamankan akses ke github, menurut pendapat saya. (yang mungkin berbeda dari pendapat Anda tentu saja!)
Hugh Perkins
3
@GregB Jangan jatuh ke dalam paranoia! :] Tentu saja, bahwa menggunakan kunci yang dilindungi kata sandi jauh lebih aman, daripada menggunakan kata sandi-kurang, tetapi mengklaim bahwa kunci tanpa kata sandi mudah dipecahkan karena menyimpan kata sandi dalam file teks adalah kesalahan nyata. Saya telah melihat banyak panduan, yang mendorong pengguna untuk menggunakan kunci yang dilindungi kata sandi, tetapi saya belum pernah melihat klaim, bahwa menggunakannya tanpa kata sandi sama sekali tidak aman. Plus: beberapa sistem tidak mendukung solusi untuk mengingat kata sandi kunci, dimasukkan oleh pengguna, dan memintanya, setiap kali kunci digunakan. Yang membuat menggunakan kunci SSH tidak ada gunanya dalam situasi ini.
trejder
4
Demi percakapan, yang telah menyimpang dari pertanyaan asli, kunci SSH tentu lebih aman secara kriptografi daripada kata sandi, tetapi keamanan itu berisiko dengan tidak mengenkripsi kunci SSH Anda. Pendekatan pribadi saya adalah membuka kunci kunci saya di awal hari menggunakan agen SSH, yang kemudian menyimpan kunci yang didekripsi dalam memori sehingga saya tidak perlu memasukkan kembali kata sandi sepanjang hari. Seperti komentar @Hugh Perkins, dan saya parafrase, Anda semua tahu persyaratan keamanan Anda lebih baik daripada saya / kami lakukan :).
GregB
38

Jika Anda menggunakan msysgit dengan alat OpenSSH, Anda harus membuat ~/.ssh/id_rsa, atau membuat konfigurasi Git ~/.ssh/configyang menunjuk ke kunci Anda.

Berikut adalah contoh konfigurasi Git untuk Bitbucket yang akan menggunakan nama pengguna yang benar, dan kunci selain kunci default (jika Anda mempertahankan satu kunci untuk koneksi SSH, dan yang lain untuk akun Git).

~ / .ssh / config :

Host bitbucket.org
    Hostname bitbucket.org
    User git
    IdentityFile /C/keys/yourkey.key

Setelah di Git Bash, Anda dapat menjalankan dua perintah untuk menambahkan kunci Anda ke ssh-agent sesi Anda saat ini untuk menghindari keharusan mengetik berulang kali kata sandi kunci tersebut.

eval `ssh-agent`
ssh-add /C/keys/yourkey.key
GregB
sumber
1
Saya melakukan ini tetapi untuk github.com: Host github.com IdentityFile ~ / .ssh / github_rsa
Sarah Vessels
1
Jika Anda memiliki ruang di jalur Anda, Anda harus menggunakan tanda kutip: IdentityFile "/ C / My Keys / key"
r03
Saya lebih suka cara ini, karena ini memungkinkan saya menghubungkan dengan cepat kunci-kunci yang ada dari PC lain
Kirill Gusyatin
.Gitconfig saya memiliki bagian. Di bagian mana saya harus meletakkan host ini?
Steve Yakovenko
16

Saya baru saja mengatur% HOME% =% HOMEPATH%

Ini memiliki keuntungan bekerja untuk semua pengguna yang masuk ke sistem (mereka masing-masing mendapatkan folder .ssh terpisah).

Di Vista:

  1. Klik kanan pada Komputer
  2. Pilih Properti
  3. Klik Pengaturan Sistem Lanjut
  4. Klik pada Variabel Lingkungan
  5. Di bagian bawah (Variabel Sistem) Klik Baru
  6. Untuk tipe nama Variabel: HOME
  7. Untuk jenis jalur variabel:% HOMEPATH%
  8. Klik OK
Jono
sumber
6
Dalam kasus saya, saya telah menambahkan HOME =% USERPROFILE%
igor
1
Perhatikan bahwa %HOMEPATH%tidak mengandung huruf drive, jadi jika sumber Anda tidak di C:Anda perlu tambahkan C:ke %HOME%.
Graeme Perrow
set %HOME%=%HOMEPATH%bekerja untukku! Terima kasih!!
teng
7

Kunci pribadi Anda perlu ditambahkan ke agen SSH di workstation Anda. Bagaimana Anda mencapai hal ini tergantung pada apa yang Anda gunakan klien git, namun dempul dan agen terkait (kontes) dapat melakukan trik untuk Anda, inilah tautan ke binari dan sumber resmi:

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Declan Shanaghy
sumber
Saya menyatakan di atas bahwa saya menggunakan Git untuk Windows dan saya menggunakan ssh.exe (paket w / git) sebagai pengganti dempul. Pasti ada beberapa praktik standar untuk menambahkan kunci privat, sepertinya saya tidak tahu caranya. Sementara beralih perangkat lunak memang memungkinkan saya untuk masuk, harus ada cara untuk melakukannya dengan pengaturan Git standar, bukan?
binaryorganic
Maaf saya tidak bekerja di windows, hanya linux. Tetapi kuncinya memang harus ada di agen SSH Anda. apakah ada agent.exe atau sesuatu di sepanjang garis itu?
Declan Shanaghy
1
Ya, setup adalah kue di sisi linux. Tapi sayangnya saya harus membuatnya bekerja di Windows. Ada beberapa file yang dapat dieksekusi terkait ssh di folder git / bin pada kotak Windows (ssh, ssh-add, ssh-agent, ssh-keygen & ssh-keyscan), tetapi saya tidak tahu bagaimana cara membuatnya. lakukan apapun. Mereka hanya mengedipkan jendela cmd membuka dan menutup segera. Saya bingung.
binaryorganic
8
Pageant memang memecahkan masalah bagi saya - saya memiliki jalan pintas di folder Startup Menu Start saya ( C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) menunjuk ke "C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk", sehingga itu memuat kunci SSH saya pada startup dan ini membuat GIT "hanya berfungsi": o)
Owen Blacker
@OwenBlacker OMFG! Anda pasti harus menulis komentar ini sebagai jawaban ukuran penuh ! Ini adalah satu-satunya solusi di sini , yang sebenarnya membantu saya dan menyelesaikan masalah saya! Sayang sekali, saya hanya bisa memberi Anda +1! :]
trejder
6

Dalam kasus saya, saya menggunakan Git untuk Windows dalam wadah Docker windowsservercore.

Git saya dipasang oleh Chocolatey ke C:\Program Files\Git.

Saya harus memperbarui file C:\Program Files\Git\etc\ssh\ssh_configdengan ini:

Host example.com
   Identityfile ~/.ssh/id_rsa

Kemudian saya bisa menggunakan kunci dari C:\Users\<user>\.ssh\id_rsa

Jika Anda menggunakan Git untuk windows bersama dengan OpenSSH untuk Windows. Git masih menggunakan sendiri ssh.

Ditambah jika Anda berencana menggunakan ssh-keyscan host.com > known_hostsdari OpenSSH, hati-hati karena keluaran pipa dari stdoutdari keyscan(pada Windows) perubahan encoding ke UCS-2, tetapi OpenSSH dapat membaca hanya UTF-8! Jadi pastikan untuk mengubah known_hostspenyandian file.

oglop
sumber
Ini membantu, tetapi bagi siapa saja yang menggunakan kunci id_dsa, Anda juga perlu menambahkan "PubkeyAcceptedKeyTypes ssh-dss" di bawah host Anda.
Michael Russo
4

OK, saya melihat saran dari ..

Tetapi menempatkan di kunci SSH pribadi saya di folder publik saya tidak berpikir itu ide yang baik, jadi saya mulai mencari di mana tuan rumah dikenal itu.

Jadi, jika Anda ingin melindungi kunci SSH Anda dengan benar, Anda perlu memasukkan kunci Anda di direktori berikut:

Untuk Windows 7, 8, dan 8.1 32-bit:

C: \ Users \\ AppData \ Local \ VirtualStore \ Program Files \ Git \

Untuk Windows 7, 8, dan 8.1 64-bit:

C: \ Users \\ AppData \ Local \ VirtualStore \ Program Files (x86) \ Git \

Bas van den Dikkenberg
sumber
Ini adalah solusi paling sederhana di mesin Win7 saya. Seperti Anda, saya mencari known_hosts. Benar saja, itu di C:\Users\Dave\AppData\Local\VirtualStore\Program Files (x86)\Git\.ssh. Dengan menempatkan file kunci saya (id_rsa) di direktori itu, ssh dapat menemukannya tanpa keluhan. Saya membaca sedikit - ini adalah bagaimana Windows menangani (warisan) perangkat lunak yang mencoba menulis ke daerah terlarang (seperti "C: \ Program Files \"), jadi ssh Git benar-benar tidak menyadari bahwa ia menulis ke direktori VirtualStore, Windows menangani itu secara transparan. Setidaknya file-file ini milik pengguna!
DaveGauer
4

Cara paling efisien adalah menggunakan Pageant karena itu akan membiarkan Anda menulis frasa sandi hanya sekali di awal sesi alih-alih setiap dorongan. Semua jawaban di sini terlalu pendek, jadi saya akan memposting panduan terperinci di sini:

  1. Download pageant.exe, puttygen.exe, putty.exedan plink.exedari website Putty ini. Tempatkan mereka di C:\puttyToolsdirektori.
  2. Lari puttygen.exe.
  3. Klik tombol Generate.
  4. Goyangkan mouse di bagian atas jendela hingga bilah progres penuh, seperti yang diminta oleh program.
  5. Berikan frasa sandi, dan ulangi di kotak teks berikutnya.
  6. Klik "Simpan kunci pribadi". Direktori yang biasa digunakan untuk menyimpan ini adalah %USERPROFILE%\_ssh(di komputer saya ini memetakan C:\Users\andres\.ssh\). Tidak masalah apa yang Anda sebut kunci, tetapi untuk tujuan demonstrasi, saya akan menyebutnya github.ppk. File ini harus memiliki ekstensi .ppk.
  7. Salin teks di kotak teks teratas di PuTTYgen, yang berlabel Public key for pasting into OpenSSH authorized_keys filedan tempel ke kunci SSH baru di pengaturan GitHub. Beri judul yang menjelaskan mesin apa yang dihidupkan kuncinya (mis. "Work laptop").
  8. Jalankan pageant.exe, ikon systray baru akan muncul.
  9. Klik kanan pada ikon -> Tambahkan kunci.
  10. Temukan file ppk Anda, masukkan frasa sandi Anda.
  11. Buat variabel lingkungan pengguna baru ini (melalui mencari aplikasi Environmelalui WindowsMenu yang akan ditemukan Edit environment variables for your account): GIT_SSH = "C:\puttyTools\plink.exe"danSVN_SSH = "C:\puttyTools\PuTTY\plink.exe"
  12. Buka putty.exe dan coba sambungkan ke host tempat Anda meng-host repositori Git Anda. Misalnya, coba sambungkan ke github.com melalui SSH, dan sebuah dialog akan menanyakan Anda apakah Anda menerima sidik jari dari server: klik YES.
  13. Jalankan instance baru dari MINGW64konsol Git Anda , dan verifikasi bahwa variabel lingkungan ada dengan menulis perintah env | grep -i ssh.
  14. Anda harus siap. Cobalah untuk mengkloning dengan protokol Git + SSH dari host Anda.

(Awalnya diekstrak dari dua panduan ini yang saya gabungkan menjadi satu: Cara men-setup Git untuk Windows dan Mengkonfigurasi MinGW-W64 + MSYS untuk menggunakan Putty Plink / Pageant .)

knocte
sumber
3

Saat menggabungkan GitHub untuk Windows dan Git GUI untuk Windows, Anda mungkin mengalami masalah di mana Git GUI terus meminta Anda untuk nama pengguna dan kata sandi. Obat untuk ini adalah mengubah URL jarak jauh dari https:(yang merupakan apa yang diciptakan GitHub untuk Windows) ke protokol Git. Dalam .gitdirektori di file konfigurasi, temukan:

[remote "origin"]
   url = https://github.com/**username**/**reponame**.git
   fetch = +refs/heads/*:refs/remotes/origin/*

Ubah ke:

[remote "origin"]
    url = [email protected]:**username**/**reponame**.git
    fetch = +refs/heads/*:refs/remotes/origin/*
IDisposable
sumber
Ya itu sangat menyebalkan. Adalah alami dan mudah untuk mengkloning repo dengan github untuk windows GUI, tetapi ketika menggunakan git cui di luar git shell gagal. Saya bertanya-tanya bagaimana perintah git di shell git bekerja dengan https url ...
hiroshi
untuk SSH apakah awalan selalu git@{SERVER URL}?
nmz787
Ya, sejauh yang pernah saya lihat :)
IDisposable
Sudah punya ini - masih bertanya kepada saya sepanjang waktu
Ian Grainger
3

Lokasi standar untuk file dalam %USERPROFILE%\.ssh.

%USERPROFILE%adalah setara dengan $ HOME di Unix (biasanya memetakan ke sesuatu seperti c:\users\youruserid).

Jika Anda menggunakan alat SSH yang datang dengan Git, yang merupakan baris perintah standar alat Unix-style, Anda dapat menggunakan sesuatu seperti skrip saya di sini untuk bekerja dengan ssh-agent di semua shell.

Eric Blade
sumber
Untuk pembaca masa depan, %USERPROFILE% is the equivalent of $HOMEadalah tidak setara dengan $HOME. Banyak aplikasi Linux yang berakting buruk yang porting ke Windows memperlakukan keduanya dengan sama tetapi mereka tidak harus diperlakukan sama.
Micah Zoltu
Mikha, dapatkah Anda memberi tahu perbedaan maksudnya untuk itu? Juga, bahkan dengan maksud berbeda, akan terlihat bahwa jika semua alat menggunakan satu sebagai yang lain, maka bukankah itu secara efektif menjadi setara?
Eric Blade
Alat yang digunakan %USERPROFILE%pada Windows dengan cara yang sama seperti $HOMEdi Linux melanggar praktik / rekomendasi terbaik yang didokumentasikan dengan baik untuk pengembangan Windows (diterbitkan oleh MS sejak lama dan diperbarui dari waktu ke waktu). Ada banyak alat yang melakukan ini, tetapi argumen untuk mengikutinya sangat mirip dengan argumen "X kencing di kolam, jadi kita juga harus." USERPROFILEadalah tempat pengguna menyimpan dokumen yang mereka buat / simpan (mis., simpan dialog). APPDATAadalah untuk data konfigurasi per pengguna. LOCALAPPDATAuntuk cache per pengguna dan file besar. PROGRAMDATAuntuk konfigurasi dan cache di seluruh mesin.
Micah Zoltu
Secara umum, satu-satunya alat yang bertingkah buruk dengan USERPROFILE adalah alat yang ditulis oleh pengembang Linux dan kemudian diangkut ke Windows. Sebagai pengembang, Anda mungkin menggunakan banyak ini sehingga rasanya seperti "semua orang melakukannya" tetapi di luar ekosistem perkakas pengembangan, sebagian besar aplikasi Windows sebenarnya adalah warga negara yang baik. Bahkan Microsoft terkadang membuat kesalahan dengan tidak meletakkan barang-barang di tempat yang tepat (mereka adalah perusahaan besar), meskipun secara umum ketika Anda menunjukkannya kepada mereka, mereka berupaya untuk menyelesaikan masalah dan mengikuti pedoman OS.
Micah Zoltu
1
(maaf, karakter StackExchange membatasi komentar). Berikut ini rincian lebih lanjut tentang folder dan deskripsi singkat tentang apa yang terjadi di masing-masing. Ada sumber lain juga, termasuk lebih posting blog habis, tapi yang satu ini menawarkan akurasi yang paling teknis: technet.microsoft.com/en-us/library/cc749104(v=ws.10).aspx
Mikha Zoltu
2

Saya memiliki masalah serupa dan tidak ada jawaban di sini yang memecahkan masalah. Ternyata, pasangan kunci saya awalnya dihasilkan dengan frasa sandi kosong. (Aku tahu, bodoh.)

Begitu saya membuat keypair baru dan mengunggah kunci publik ke GitHub, semuanya mulai berfungsi lagi.

Eric Cloninger
sumber
1
ini. ughhhhhhhhhhhhh. selamat tinggal 2 jam
Scoop
1

Jawaban berikut juga berlaku untuk pertanyaan ini ketika menjalankan ssh dari Windows Service Account: Jenkins (Windows Service) dengan Git over SSH

Alexander Pacha
sumber
Mengikuti tautan yang Anda berikan, saya bisa mendapatkan pengaturan Jenkins. Saya perlu mengatur variabel lingkungan HOME ke jalur program Git yang menyimpan direktori .ssh yang saya buat kunci SSH saya.
Spechal
1

Anda dapat menentukan jalur ke kunci dan nama file kunci seperti itu (di Ubuntu). Sebagai contoh:

ssh -i /home/joe/.ssh/eui_rsa
Jim
sumber
Ini benar-benar menyelesaikan masalah dan memungkinkan Anda untuk menyimpan kunci Anda di mana pun Anda mau.
DaveGauer
Pertanyaannya secara khusus tentang windows. Saya memiliki git di mesin Ubuntu saya yang bekerja seperti ini, tetapi saya tidak tahu apa yang harus saya setel GIT_SSH_COMMANDpada mesin Windows saya.
mjaggard
1

Kontes (agen SSH yang disertakan dengan bundel Putty ) memecahkan masalah bagi saya.

Saya memiliki pintasan di folder Startup Menu Start saya ( C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) yang menunjuk "C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk", sehingga ia memuat kunci SSH saya pada startup dan ini membuat Git "berfungsi": o)

Owen Blacker
sumber
4
Saya pikir Anda memerlukan beberapa pengaturan lain yang benar agar ini berfungsi (seperti GIT_SSH diatur ke TortoisePLink.exe, saya pikir?), Dan meskipun itu telah bekerja untuk saya di masa lalu, saya sering mendapatkan masalah dengan itu di komputer lain. :-(
Simon East
Saya mendapatkan 'Tidak dapat membuka file' dari Pageant :( Yang saya tahu sudah diatur dengan benar karena saya menggunakannya untuk TortoiseGit :(
Ian Grainger
1

Banyak jawaban yang mengatakan ini, tetapi bagi saya tidak cukup cepat!

di windows menggunakan msys (konsol windows standar) C:\Users\{you}\.ssh\id_rsa

Pada dasarnya itu tidak mengganggu pemindaian kunci yang diinstal (setidaknya tidak pada laptop baru saya) dan kebutuhan khusus id_rsa

Saya menemukan ini ingin mengkloning beberapa repo pekerjaan pribadi dalam ruby ​​MSYS CLI untuk windows 10 64-bit

MrMesees
sumber
0

Jika Anda menggunakan Windows 7/8, Anda harus mencari di C: \ Users \ Your_User_Name.ssh. Cukup salin & tempel file id_rsa Anda di sini dan semuanya akan berjalan di luar kotak.

Eeree
sumber
0

Satu kesalahan yang saya buat ketika menggunakan SSH pada Windows adalah ketika saya mencoba menggunakan kunci melalui klien Git Bash, semua file di dalam ~ / .ssh adalah izin yang salah, namun tidak berusaha memberi tahu saya bahwa itu adalah masalah.

Sama seperti tes, pastikan Anda telah mengatur semuanya di direktori ~ / .ssh Anda ke chmod 600.

Spedge
sumber
0

Jika Anda memiliki izin yang diperlukan pada mesin Windows, dan kebijakan Anda mengizinkannya, saya sarankan menginstal Cygwin ( https://cygwin.com/ ), terutama mengingat Anda memiliki pengalaman sebelumnya dengan Linux. Cygwin akan memungkinkan untuk menangani kunci ssh Anda seperti yang Anda lakukan pada mesin Linux / Unix lainnya. Dan itu menyediakan akses ke hampir semua alat Linux.

torbenl
sumber
1
Sangat masuk akal untuk membuat saran seperti ini sebagai komentar. Tetapi ketika pertanyaan secara eksplisit meminta git untuk windows, Anda harus mengharapkan suara untuk posting ini sebagai jawaban.
merampok
0

TortoiseGit memungkinkan Anda menentukan kunci yang akan digunakan saat mengkloning repositori. Cukup centang "Load Putty Key" dan telusuri .ppkfile tersebut, seperti pada tangkapan layar:https://i.stack.imgur.com/lAyzT.png

NGNeer
sumber
Jika dinonaktifkan, periksa Settings... -> Network -> SSH clientdiatur keC:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
Nikita Bosik
0

Saya telah memperbaiki masalah di atas dengan membuat

~ / .ssh / config

file dan taruh:

IdentityFile C:\Users\adria\.ssh\mysshkey
Adrian Onu
sumber
0

Membaca komentar Anda pada jawaban Declan, cobalah membuka command prompt terlebih dahulu (Mulai → Jalankancmd ) dan kemudian arahkan ke folder git / bin itu dan jalankan ssh-keygen. Secara teoritis itu akan menghasilkan kunci RSA dan menempatkannya di direktori yang sesuai. Maka Anda harus menemukannya dan membagikan kunci publik Anda kepada dunia.

Alasan bahwa jendela "berkedip" adalah karena Windows menjalankan program, dan ketika dijalankan, ia menutup command prompt, berpikir Anda sudah selesai dengan itu, ketika Anda benar-benar membutuhkan output.

naydichev
sumber
0

Menggunakan v0.17 dari Git Gui di Windows saya mengklik perintah menu berikut: BantuanTampilkan Kunci SSH .

Muncul dialog berjudul Kunci Publik OpenSSH Anda . Saya membuat kunci dan menyalinnya ke clipboard. Kemudian saya terus mengikuti instruksi setup-ssh pada githelp dari Langkah Tiga dan seterusnya. Setelah itu Git Gui berkomunikasi dengan GitHub secara diam-diam - tidak perlu memasukkan kredensial.

Snow6oy
sumber
0

Pada sistem Windows 7 saya, Git Gui mencari kunci RSA di userprofile/.sshfolder atau lebih khusus c:/users/yourusername/.ssh/.

Bagian rumit untuk pengaturan saya adalah mendapatkan host bersama di hostmonster untuk menerima kunci. Satu-satunya cara saya bisa membuatnya bekerja adalah dengan menggunakan Git Gui untuk membuat pasangan kunci (tanpa kata sandi) dan kemudian menyalin dan menempelkan kunci publik melalui panel kontrol, ssh, kelola kunci.

Untuk memulai di awal, Anda harus membuat kunci di Git Gui dengan masuk ke menu Help , Show SSH key , lalu Generate Key . Sekarang Anda akan memiliki dua kunci baru di .sshdirektori. Buka .pubfile dan salin isinya.

Masuk ke panel kontrol Anda pada host bersama dan masuk ke SSH , Kelola kunci SSH , dan kunci Impor . Rekatkan ke kotak Publik , dan pastikan Anda menamainya nama yang tepat tanpa ekstensi-- milikku id_rsa. Sekarang Anda harus mengotorisasi kunci menggunakan tautan kelola otorisasi, sehingga akan digabungkan ke dalam authorized_keysfile.

Sekarang Git Gui dan Git Bash Anda harus dapat mendorong menggunakan SSH tanpa harus mengetikkan kata sandi. Anehnya, saya bisa mendorong menggunakan SSH via Git Bash dan Git Gui baik-baik saja di server saya sendiri yang menjalankan Linux, itu hanya hosting bersama yang memberi saya cocok. Saya harap ini membantu seseorang karena butuh waktu berjam-jam untuk membuat ini - dan ini sangat sederhana!

pengguna228414
sumber
0

Jika Anda menggunakan baris perintah Git untuk Windows, Anda dapat melakukan hal berikut:

Buka cmd.exedan jalankan setx HOME c:\PATH_TO_PRIVATE_KEY.

Buat folder baru .ssh,, (jika tidak ada) di dalam c:\PATH_TO_PRIVATE_KEYdan salin id_rsafile Anda (kunci pribadi Anda) ke dalamnya.

Selesai. Sekarang Anda dapat menggunakan baris perintah Git secara normal.

Duccom
sumber
0

Saya msysgit OpenSSL / pengalaman Bash Git (tidak Plink Putty) adalah bahwa urutan pencarian Anda yang .ssh/folder adalah sebagai berikut.

  1. %HOME%/.ssh/
  2. %HOMEDRIVE%%HOMEPATH%/.ssh/
  3. %USERPROFILE%/.ssh/

Karena itu mengapa banyak orang menyarankan pengaturan HOMEjika salah satu dari yang lain tidak seperti yang Anda harapkan. Lebih penting lagi, Anda dapat memeriksa sendiri; untuk men-debug gunakan ssh -vke server yang menggunakan otentikasi kunci publik sebagai berikut:

$ ssh -v [email protected]
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Reading configuration data /d/.ssh/config
...
debug1: identity file /d/.ssh/identity type -1
debug1: identity file /d/.ssh/id_rsa type 1
debug1: identity file /d/.ssh/id_dsa type -1
...
debug1: Next authentication method: publickey
debug1: Trying private key: /d/.ssh/identity
debug1: Offering public key: /d/.ssh/id_rsa
..
Hi kcd83! You've successfully authenticated, but GitHub does not provide shell access.

Kami menemukan sshpencarian di drive yang tidak jelas dan tidak ada jawaban sebelumnya yang menjelaskan apa yang kami lihat.

Kadang %HOMEDRIVE%%HOMEPATH%- kadang adalah drive jaringan yang dipetakan (mis. H:/) Yang menyebabkan kegagalan yang tidak perlu ketika ada masalah network / fileserver, bahkan ketika %USERPROFILE%/.sshada C:/Users/Username/.sshdan memiliki kunci secara lokal. Pengaturan %HOME%untuk %USERPROFILE%menghentikannya melihat drive rumah jarak jauh.

KCD
sumber
0

Anda juga dapat memuat Agen Putty (kontes) dan menambahkan kunci pribadi yang Anda buat dengan Putty untuk server.

Git mengenali ini dan menggunakannya untuk mendorong / menarik.

deepakkt
sumber
0

Saya menggunakan TortoiseGit dan Git Bash di Windows, tergantung kebutuhan. Saya telah menambahkan semuanya ke dalam TortoiseGit, dan itu bekerja dengan baik, tetapi Git Bash tidak mengambilnya meskipun kunci berada di direktori yang benar. Ternyata saya harus melakukan ini dari Git Bash:

ssh-add C:\\Users\\<YOUR_USER>\\.ssh\\id_rsa

Anda tentu saja dapat mengubah jalur ke mana pun kunci Anda berada, mengingat untuk digunakan \\sebagai pemisah.

Vlad Schnakovszki
sumber
0

Jika menggunakan Git untuk Windows, setelah kunci SSH dibuat, Anda harus menambahkan kunci SSH Anda ke ssh-agent.

Lihat Menghasilkan kunci SSH baru dan menambahkannya ke ssh-agent .

eval $(ssh-agent -s)

// Tell where the keys are located

ssh-add ~/.ssh/id_rsa
Matoeil
sumber
Selamat Datang di Kesalahan Server. Pertanyaan ini sudah memiliki jawaban yang diterima secara luas yang diterima beberapa tahun yang lalu. Terus mencari pertanyaan yang lebih baru atau yang dapat ditingkatkan secara signifikan.
Matthew Wetmore
1
jawaban yang diterima secara luas tidak bekerja untuk saya sedangkan jawaban ini berhasil. Saya percaya ini mungkin membantu seseorang untuk mengetahui kunci harus ditambahkan ke agen ssh dan itu dapat dilakukan dengan 2 baris instruksi
Matoeil