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


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


461
2017-10-25 16:45




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 dapat masuk sebagai "git" dengan saya kunci meskipun saya telah menyalin file "authorized_keys" dari "root" saya ke pengguna "git" dan mengatur pemilik dan izin dengan benar. Mengapa saya tidak bisa login sebagai "git" ketika "root" berfungsi dengan file "authorized_keys" yang sama. Sebagai gantinya "git", ia meneruskan semua kunci privat, yang sama persis dengan "root" dan meminta kata sandi. Ini adalah server Centos 5.5 dengan cara. - Jarrod Roberson
@fuzzy lollipop: Apakah Anda memiliki izin yang tepat pada file otor_keys pengguna git Anda? Ini 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 - Jarrod Roberson


Jawaban:


Untuk Git Bash

Jika Anda menjalankan msysgit (saya mengasumsikan Anda) dan ingin menjalankan Git Bash (saya merekomendasikannya pada TortoiseGit, tetapi saya lebih condong ke CLI daripada GUI sekarang), Anda perlu mencari tahu apa direktori home Anda untuk Git Bash dengan memulai lalu ketik pwd (Pada Windows 7, itu akan menjadi sesuatu seperti C:\Users\phsr Kupikir). Saat Anda berada di Git Bash, Anda harus mkdir .ssh.

Setelah Anda memiliki direktori home, dan a .ssh folder di bawah itu, Anda ingin membuka PuTTYgen dan membuka kunci (file .ppk) yang telah Anda buat sebelumnya. Setelah kunci Anda terbuka, Anda ingin memilih Conversions -> Export OpenSSH key dan simpan ke 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 kecepatan. Anda perlu melakukan itu untuk setiap repositori yang Anda gunakan dengan TortoiseGit.


459
2017-11-05 17:18



Instruksi pacey untuk tortoisegit tidak akan berfungsi sampai Anda memiliki repositori (karena pengaturan konfigurasi 'remote' tidak muncul kecuali Anda bertindak pada repo), dan Anda mungkin tidak bisa mendapatkan repositori di tempat pertama jika Anda dapat ' t mengotentikasi diri sendiri untuk mengkloning dari asalnya. Rumit! - Kylotan
Dengan GitBash saya menemukan saya harus menyalin ~/.ssh/id_rsa file ke Program Files\Git\.ssh\id_rsa - yang sedikit membingungkan, tetapi sekarang IntelliJ dan Windows cmd dapat mendorong ke repositori git yang menggunakan otentikasi kunci. - JP.
Juga. Saya baru saja menginstal git-for-windows, saya menjalankannya dari cmd.exe. Saya perlu meletakkan file id_rsa dan id_rsa.pub ke c:\program files (x86)\Git\.ssh . Itu .ssh dir sudah ada. Terima kasih, JP. - Cheeso
Paragraf kedua adalah emas. :) - Bjørn
@Damon: Seharusnya begitu id_rsa tanpa ekstensi. Itu adalah nama file, itu bukan direktori - Dan McClain


Menggunakan klien SSH internal yang dikirim dengan Git untuk Windows, Anda perlu mengatur variabel lingkungan RUMAH sehingga klien Git SSH dapat menemukan kunci.

Misalnya, pada a Windows Vista instalasi, ini akan dilakukan dengan menerbitkan 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 (meskipun saya belum pernah melakukannya) dan ssh-add seperti biasa.

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

Jika ini tidak bekerja dengan benar, menggunakan plink mungkin dapat dicapai dengan tweaking GIT_SSH. Lihat semua tutorial SVN + ssh; ini pada dasarnya adalah perpipaan yang sama yang perlu Anda atur.


101
2017-11-05 18:24



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


Anda dapat menentukan lokasi kunci untuk TortoiseGit dengan cara berikut:

  • Buka Jendela Explorer.
  • Buka Contextmenu dan navigasikan TortoiseGit → Pengaturan
  • Di jendela yang terbuka sekarang, navigasikan ke Git → Terpencil
  • Atur path ke kunci PuTTY Anda di kotak input yang sesuai.

Screenshot di bawah ini:

Enter image description here


48
2017-11-05 14:07



Selain itu jika Anda perlu mengubah kunci pribadi Anda ke dalam format '.ppk' dari format lain yang dapat Anda ikuti INI - Tariq M Nasim
Itu berhasil bagi saya. - Maxim Eliseev
Git> Remote hanya muncul setelah Anda berhasil mengkloning repositori. - Steve Pitchers
Solusi yang jauh lebih mudah adalah mengatur semuanya bekerja dengan benar di git (menggunakan openSSH), dan kemudian memberitahu TortoiseGit untuk menggunakan ssh.exe yang digunakan oleh git. Lihat stackoverflow.com/a/33328628/318317 Dengan begitu, Anda hanya perlu memperbaikinya sekali ini. - Daniel Rose


Tak satu pun dari jawaban sebelumnya yang berhasil untuk saya. Inilah yang 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 passphrase kosong (jadi cukup tekan 'enter' untuk semua pertanyaan ')
  • Sekarang salin kunci publik ke server Anda, misalnya: scp ~ / .ssh / id_rsa.pub someuser@someserver.com: ~

Itu sedikit di komputer Anda sendiri. Sekarang ssh ke 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 someuser@someserver.com 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', 'SSH dan kunci GPG', klik 'Kunci SSH baru', dan tempelkan kunci.

45
2018-04-25 01:32



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
Anda menjawab pertanyaan yang salah. Q adalah bagaimana menunjuk ke kunci pribadi yang ada. - Orangutech
@ GregB, saya melihatnya seperti ini: setiap server yang saya buat kunci tanpa sandi sama amannya dengan laptop saya, ini adalah perpanjangan dari perimeter keamanan laptop saya. Sebenarnya, bahkan tidak, karena direktori home saya dienkripsi ;-) Jadi, ini seaman partisi rumah terenkripsi pada laptop saya, yang 'cukup baik' untuk mengamankan akses ke github, menurut saya. (yang mungkin berbeda dari pendapat Anda tentunya!) - Hugh Perkins
@GregB Jangan jatuh ke paranoia! :] Tentu, bahwa menggunakan kunci yang dilindungi kata sandi jauh lebih aman, daripada menggunakan tanpa kata sandi, tetapi mengklaim bahwa kunci tanpa-password sama mudahnya dengan memecah seperti menyimpan kata sandi dalam file teks adalah kesalahan yang jelas. Saya telah melihat banyak panduan, yang mendorong pengguna untuk menggunakan kunci yang dilindungi sandi, tetapi saya tidak pernah melihat klaim apa pun, 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 sia-sia dalam situasi ini. - trejder
Demi percakapan, yang telah menyimpang dari pertanyaan asli, kunci SSH tentu lebih aman secara kriptografi daripada kata sandi, tetapi keamanan itu beresiko dengan tidak mengenkripsi kunci SSH Anda. Pendekatan pribadi saya adalah membuka kunci saya di awal hari menggunakan agen SSH, yang kemudian menyimpan kunci yang didekripsi di 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 :). - GregB


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

Berikut 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 berada di Git Bash, Anda dapat menjalankan dua perintah untuk menambahkan kunci ke ssh-agent sesi Anda saat ini untuk menghindari berulang kali mengetik kata sandi kunci.

eval `ssh-agent`
ssh-add /C/keys/yourkey.key

34
2018-04-11 06:34



Saya melakukan ini tetapi untuk github.com: Host github.com IdentityFile ~ / .ssh / github_rsa - Sarah Vessels
Jika Anda memiliki ruang di jalan Anda, Anda harus menggunakan tanda kutip: IdentityFile "/ C / My Keys / key" - r03
Saya lebih suka cara ini, karena ini memungkinkan saya terhubung cepat dengan kunci yang ada dari PC lain - Kirill Gusyatin
My. Gitconfig memiliki beberapa bagian. Di bagian mana saya harus meletakkan host ini? - Steve Yakovenko


Saya hanya 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 jenis nama Variabel: HOME
  7. Untuk jenis jalur Variabel:% HOMEPATH%
  8. Klik OK

14
2017-10-12 01:26



Dalam kasus saya, saya menambahkan HOME =% USERPROFILE% - igor
Perhatikan itu %HOMEPATH% tidak berisi huruf drive, jadi jika sumber Anda tidak aktif C: Anda perlu menambahkan C: untuk %HOME%. - Graeme Perrow


Kunci pribadi Anda perlu ditambahkan ke agen SSH di workstation Anda. Bagaimana Anda mencapai hal ini mungkin bergantung pada klien git apa yang Anda gunakan, namun puTTY dan agen terkaitnya (kontes) mungkin melakukan trik untuk Anda, berikut tautan ke binari dan sumber resmi:

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


7
2017-10-25 17:38



Saya menyatakan di atas bahwa saya menggunakan Git untuk Windows dan saya menggunakan ssh.exe (dikemas w / git) sebagai pengganti dempul. Harus ada beberapa praktik standar untuk menambahkan kunci pribadi, saya hanya tidak bisa mencari tahu caranya. Meskipun 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. Tapi kuncinya memang harus ada di agen SSH Anda. apakah ada agent.exe atau semacam itu? - Declan Shanaghy
Ya, pengaturan kue di sisi linux. Tetapi saya harus membuatnya bekerja pada Windows juga sayangnya. Ada beberapa file yang dapat dieksekusi dengan ssh dalam folder git / bin pada kotak Windows (ssh, ssh-add, ssh-agent, ssh-keygen & ssh-keyscan), tetapi saya tidak tahu cara membuat salah satu dari mereka. lakukan apapun. Mereka hanya mengedipkan jendela cmd terbuka dan menutup segera. Saya bingung. - binaryorganic
Kontes memang memecahkan masalah bagi saya - saya memiliki pintasan di folder Start 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 memuat kunci SSH saya saat startup dan ini membuat GIT "hanya berfungsi": o) - Owen Blacker
@OwenBlacker OMFG! Kamu pasti harus tulis komentar ini sebagai ukuran penuh menjawab! Ini adalah satu-satunya solusi di sini, yang benar-benar membantu saya dan memecahkan masalah saya! Sayang, saya hanya bisa memberi Anda +1! :] - trejder


OK, saya melihat saran dari ..

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

Jadi jika Anda ingin benar melindungi kunci SSH Anda, 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 \


4
2017-09-08 10:04



Hai Bas. Saya pikir Anda harus menghapus pertanyaan Anda dan bertanya atau memberikannya Pengguna Super karena ini adalah situs yang salah untuk pertanyaan / jawaban semacam ini :-) - Ian Macintosh
Itu bukan pertanyaan saya hanya sugestion - Bas van den Dikkenberg
Ini adalah solusi paling sederhana pada mesin Win7 saya. Seperti Anda, saya mencari known_hosts. Benar saja, itu masuk 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 melakukan sedikit membaca - ini adalah bagaimana Windows menangani perangkat lunak (warisan) yang mencoba untuk menulis ke area terlarang (seperti "C: \ Program Files \"), jadi ss Git benar-benar tidak menyadari bahwa itu sedang menulis ke direktori VirtualStore, Windows menangani itu secara transparan. Setidaknya file-file ini milik pengguna! - DaveGauer


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

Git saya diinstal oleh Cokelat untuk C:\Program Files\Git.

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

Host example.com
   Identityfile ~/.ssh/id_rsa

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

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

Ditambah lagi jika Anda berencana menggunakan ssh-keyscan host.com > known_hosts dari OpenSSH, berhati-hatilah karena output pemipaan dari stdout dari keyscan (pada Windows) mengubah pengkodean ke UCS-2, tetapi OpenSSH hanya dapat membaca UTF-8! Jadi, pastikan untuk mengubah known_hosts pengkodean file.


4
2017-11-02 15:27



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


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

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


2
2018-01-31 23:15



ini. ughhhhhhhhhhhhh. selamat tinggal 2 jam - Scoop


Ketika mencampur GitHub untuk Windows dan Git GUI untuk Windows, Anda mungkin mengalami masalah saat Git GUI terus meminta Anda untuk memasukkan nama pengguna dan kata sandi. Obat untuk ini adalah mengubah URL jarak jauh dari https: (yang dibuat oleh GitHub untuk Windows) ke protokol Git. Dalam .git direktori di file konfigurasi, cari:

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

Ubah menjadi:

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

2
2017-09-04 22:34



Ya itu sangat menyebalkan. Itu 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 url https ... - hiroshi
untuk SSH adalah awalan selalu git@{SERVER URL} ? - nmz787
Ya, sejauh yang pernah saya lihat :) - IDisposable
Sudah punya ini - masih bertanya padaku sepanjang waktu - Ian Grainger