Git için Windows için özel RSA anahtarımı nerede bulacağını nasıl söyleyebilirim?


487

Git ayarlarım Linux'ta iyi çalışıyor, ancak Windows altında bir şeyler ayarlamaya çalıştığımda (Windows için Git ve TortoiseGit kullanarak ), özel SSH anahtarımı nereye koyacağımı bilmiyorum (ya da daha iyisi, sshnerede olduğunu nasıl söyleyeceğimi bilemiyorum) bulunur). Git for Windows kurulumu sırasında standart ssh.exe seçeneğini kullanıyorum. Sunucuda parola doğrulamasına (RSA yerine) izin verirsem kurulum düzgün çalışır.


Aynı sorun var, "Git For Windows" yüklü olan "Git Bash" programını kullanarak "root" olarak ortak bir anahtar kullanarak dev kutuma yazabilirim ancak "git" olarak giriş yapamıyorum "yetkili" anahtarlarım "dosyasını" kök "alanımdan" git "kullanıcıma kopyaladıysam ve sahipleri ve izinleri doğru bir şekilde ayarladım. "Root", aynı "yetkili" anahtar kelimelerle aynı dosyada çalıştığında neden "git" olarak giriş yapamıyorum. "Git" yerine "root" ile aynı olan ve bir şifre isteyen tüm özel anahtarlardan geçer. Bu arada bir Centos 5.5 sunucusudur.

@fuzzy lollipop: Git kullanıcınızın yetkili_keys dosyasında doğru izinleriniz var mı? Chmod 600 olmalı ve git kullanıcısına ait olmalıdır. Kök kullanıcıya aitse, işe yaramazsa
Dan McClain

evet tüm dosya ve dizinler doğru sahip ve izinlerdir

Yanıtlar:


486

Git Bash için

Eğer msysgit kullanıyorsanız (sanırım sizsiniz) ve Git Bash'i (Arıyorum TortoiseGit'i tavsiye ediyorum ama şimdi CI'ye GUI'den daha fazla eğildim), ev dizininiz için Git'in ne olduğunu bulmanız gerekiyor. Başlayarak daha sonra yazarak Bash pwd(Windows 7'de C:\Users\phsrsanırım gibi bir şey olacak ). Git Bash'deyken, yapmalısın mkdir .ssh.

Giriş dizini ve .sshaltındaki bir klasörü aldıktan sonra , PuTTYgen'i açmak ve daha önce oluşturduğunuz anahtarı (.ppk dosyası) açmak istiyorsunuz. Anahtar açıldığında, seçmek istediğiniz Conversions -> Export OpenSSH keyve kaydetmek HOME\.ssh\id_rsa. Anahtar bu konumda bulunduktan sonra Git Bash anahtarı tanıyacak ve kullanacaktır.

Not: Yorumlar, bunun her durumda işe yaramadığını gösterir. OpenSSH anahtarını Program Files\Git\.ssh\id_rsa(veya Program Files (x86)\Git\.ssh\id_rsa) kopyalamanız gerekebilir .

TortoiseGit için

TortoiseGit'i kullanırken, SSH anahtarını pacey'nin yönergeleri ile ayarlamanız gerekir . Bunu TortoiseGit ile birlikte kullandığınız her depo için yapmanız gerekir.


4
pacey'nin tortoisegit ile ilgili talimatları, havuza ulaşana kadar çalışmaz (çünkü 'uzak' yapılandırma ayarı, bir depoya işlem yapmazsanız görünmez) ve eğer yapabilirseniz, muhtemelen depoyu ilk etapta alamazsınız ' o Kökeni klonlamak için kimliğinizi doğrulayın. Zor!
Kylotan

43
GitBash ile benim kopyalamak zorunda buldum ~/.ssh/id_rsadosyayı Program Files\Git\.ssh\id_rsa- biraz kafa karıştırıcı, ama şimdi IntelliJ ve Windows cmd anahtar kimlik doğrulamasını kullanmak git depoları için zorlayabilir.
JP.

7
Aynı şekilde. Ben sadece git-for-windows yüklü, cmd.exe den çalıştırıyorum. Ben dosyaları koymak için gerekli id_rsave id_rsa.pubiçine c:\program files (x86)\Git\.ssh. .sshDir zaten mevcuttu. Sağol JP.
Cheeso

5
İkinci paragraf altındı. :)
Bjørn

4
@Damon: Bu id_rsauzantı olmadan olmalıdır . Bu dosya adı, bir dizin değil
Dan McClain

107

Git for Windows ile birlikte gelen yerleşik SSH istemcisini kullanarak, HOME ortam değişkenini, Git SSH istemcisinin anahtarı bulabilmesi için ayarlamanız gerekir.

Örneğin, bir Windows Vista kurulumunda bu setx HOME c:\Users\admin\komut satırında yayınlanarak yapılır .

Günümü yarattı ve özel anahtarınızın şifre korumalı olmaması şartıyla Git ile ilgili sorunu düzeltti. Eğer ssh-agent kullanmak istiyorsanız, muhtemelen ssh-agent cmd.exe (daha önce hiç yapmadığım halde) ve ssh-add komutunu çalıştırabilirsiniz.

Tüm Git / SSH araçlarının, bir pencerenin yanıp sönmemesi için bir cmd.exe'den çalıştırılması gerektiğini unutmayın .

Bu doğru çalışmazsa, plink kullanarak muhtemelen verdiği sağlanabilir GIT_SSH . Tüm SVN + ssh kılavuzlarına bakın; bu temelde ayarlamanız gereken aynı tesisattır.


16
Git bash'ı değil, Windows komut istemini kullanmaya çalıştığım için aradığım şey buydu.
John Ruiz,

Güzel, kolay tamir ama bu olmadan çözmek zor olurdu!
thaddeusmt

Önemli olan, HOME = ve c: \ ... arasında boşluk kalmaması, benim için hile yaptı. :-)
Lutz

2
setx HOME c:\Users\admin` command doesn't seems to be working in Git Bash. You have to use Yerine cmd`.
trejder,

2
+1GIT_SSH=c:\pathto\plink.exe
Nick Grealy,

54

TortoiseGit için anahtar konumunu aşağıdaki şekilde belirleyebilirsiniz:

  • Bir Explorer Penceresi açın.
  • Bağlam menüsünü açın ve TortoiseGitAyarlar'a gidin
  • Açılan pencerede GitUzak
  • İlgili giriş kutusunda PuTTY anahtarınızın yolunu ayarlayın.

Bir ekran görüntüsü aşağıdadır:

Resim tanımını buraya girin


8
Ek olarak, özel anahtarınızı '.ppk' formatına başka bir formattan dönüştürmeniz gerekirse, BU
Tariq M Nasım

Benim için çalıştı.
Maxim Eliseev

6
Git> Remote, yalnızca depoyu başarıyla kopyaladığınızda görünür.
Steve Pitchers

5
Çok daha kolay bir çözüm her şeyi git'te düzgün çalışacak şekilde ayarlamak (openSSH kullanarak) ve ardından TortoiseGit'e git tarafından kullanılan ssh.exe dosyasını kullanmasını söylemektir. Stackoverflow.com/a/33328628/318317 adresine bakın. Bu şekilde, bunu yalnızca bir kez düzeltmeniz gerekir.
Daniel Rose,

50

Önceki cevapların hiçbiri benim için çalıştı. İşte sonunda benim için çalıştı. Ne yazacağınızı biliyorsanız, aslında oldukça basittir. PuTTY'ye ihtiyacı yok.

  • Git Bash istemi aç
  • 'Ssh-keygen' yazın
    • Varsayılan konumu kabul et
    • Boş bir parola seçin (bu nedenle sadece 'tüm sorulara' gir 'tuşuna basın)
  • Şimdi genel anahtarı sunucunuza kopyalayın, örneğin: scp ~ / .ssh / id_rsa.pub someuser@someserver.com: ~

Bu kendi bilgisayarında yapılan bit. Şimdi sshhedef sunucuya, sonra yapın

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

Bu kadar! Sen bittin! Git Bash'den test etmek için aşağıdakileri yapın:

ssh someuser@someserver.com ls

Git sunucusundaki ana dizininizdeki dosyaları listeler ve bitirdiniz!

GitHub için sunucularına kabuk erişiminiz yok, ancak anahtarı kendi web sitelerini kullanarak yükleyebilirsiniz, böylece 'şimdi sunucunuza kopyalayın' biti için:

  • Git Bash'e 'cat ~ / .ssh / id_rsa.pub' yazın, sonucu seçin ve panoya kopyalayın.
  • GitHub web sitesinde 'Hesap ayarları', 'SSH ve GPG anahtarları' bölümüne gidin, 'Yeni SSH anahtarı' seçeneğini tıklayın ve anahtarı yapıştırın.

8
Parola olmadan anahtar oluşturmayın. Özel anahtarlar için varsayılan konumu herkesin bilmesi dışında, şifrenizi bir metin dosyasına koymak gibidir.
GregB

14
Yanlış soruyu cevaplıyorsun. Q, mevcut bir özel anahtara nasıl işaret edileceğidir.
Orangutech

7
@GregB, şuna bakıyorum: parolasız anahtar oluşturduğum herhangi bir sunucu dizüstü bilgisayarım kadar güvenli, dizüstü bilgisayarımın güvenlik çevresinin bir uzantısı. Aslında, ev dizinim şifreli olmadığı için bile değil ;-) Yani, dizüstü bilgisayarımdaki şifreli ev bölümü kadar güvenli, bence github'a erişimi güvence altına almak için 'yeterince iyi'. (ki bu sizin görüşünüze göre değişebilir!)
Hugh Perkins

3
@GregB Paranoyaya düşmeyin! :] Parola korumalı anahtarlar kullanmanın, şifresiz kullanımdan çok daha güvenli olduğundan emin olun; ancak, bir şifresiz anahtarın bir metin dosyasında şifrelerin saklanması kadar kolay olduğunu iddia etmek yanlış bir işlemdir. Kullanıcıları parola korumalı anahtarlar kullanmaya teşvik eden birçok rehber gördüm, ancak bunları parola olmadan kullanmanın hiçbir şekilde güvenli olmadığını iddia etmedim. Artı: Bazı sistemler, her bir anahtar kullanıldığında anahtarın şifresini hatırlama, kullanıcılar tarafından girilen ve bunu sorma çözümlerini desteklemez. Bu durumda SSH tuşlarını kullanarak anlamsız kılan.
trejder,

4
Orijinal sorudan sapan görüşme uğruna, SSH anahtarları kesinlikle şifrelerden daha kriptografik olarak güvenlidir, ancak bu güvenlik SSH anahtarlarınızı şifrelemeden riske girer. Kişisel yaklaşımım, bir SSH ajanı kullanarak anahtarlarımın kilidini açmaktır; bu durumda şifresi çözülen anahtarların hafızasında tutulması ve böylece şifreyi gün boyunca tekrar girmeme gerek kalmamasıdır. @Hugh Perkins'in dediği gibi ve ben de önseziyorum, hepiniz güvenlik gereksinimlerinizi benden / bizden daha iyi biliyorsunuz :).
GregB

38

OpenSSH araçlarıyla msysgit kullanıyorsanız , anahtarınızı gösteren ~/.ssh/id_rsabir Git yapılandırması oluşturmanız veya oluşturmanız ~/.ssh/configgerekir.

İşte doğru kullanıcı adını kullanacak Bitbucket için bir Git yapılandırmasına ve varsayılan anahtardan başka bir tuşa (SSH bağlantıları için bir anahtar ve Git hesapları için bir tane tutmanız durumunda) bir örnek.

~ / .ssh / config :

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

Git Bash'e girdikten sonra, anahtarın şifresini tekrar tekrar yazmak zorunda kalmamak için anahtarınızı geçerli oturumunuzun ssh-agent'ına eklemek için iki komut çalıştırabilirsiniz.

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

1
Bunu yaptım ama github.com için: Host github.com IdentityFile ~ / .ssh / github_rsa
Sarah Vessels


Bu yolu tercih ediyorum, çünkü bu, başka bir PC'den var olan anahtarları hızlıca bağlamama izin verdi
Kirill Gusyatin

.Gitconfig'imin bölümleri var. Bu ana bilgisayarları hangi bölümlerin altına yerleştirmeliyim?
Steve Yakovenko

16

Sadece% HOME% =% HOMEPATH% ayarladım

Bu, sisteme giriş yapan tüm kullanıcılar için çalışma avantajına sahiptir (her biri ayrı .ssh klasörleri alır).

Vista'da:

  1. Bilgisayar üzerinde sağ tıklayın
  2. Özellikleri Seç
  3. Gelişmiş Sistem Ayarları'na tıklayın
  4. Ortam Değişkenlerine tıklayın
  5. Alt bölümde (Sistem Değişkenleri) Yeni'ye tıklayın
  6. Değişken adı tipi için: HOME
  7. Değişken yol türü için:% HOMEPATH%
  8. Tamam'ı tıklayın

6
Benim durumumda HOME =% USERPROFILE% ekledim
igor

1
Not %HOMEPATH%üzerinde kaynağı değildir eğer öyleyse, sürücü harfi içermiyor C:sen prepend gerekir C:için %HOME%.
Graeme Perrow

set %HOME%=%HOMEPATH%benim için çalıştı! Teşekkür ederim!!
teng

7

Özel anahtarınızın iş istasyonunuzdaki SSH temsilcisine eklenmesi gerekir. Bunu nasıl elde edeceğinize bağlı olarak hangi müşteriyi kullandığınıza bağlı olabilir, ancak puTTY ve ilgili temsilcisi (yarışmacı) sizin için numarayı yapabilir, işte resmi ikili dosyalar ve kaynak:

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


Yukarıda Windows için Git kullanıyorum ve macun yerine ssh.exe (paketlenmiş w / git) kullanıyorum. Özel bir anahtar eklemek için standart bir uygulama olmalı, nasıl olduğunu bulamıyorum. Yazılımı değiştirmek gerçekten giriş yapmama izin verirken, standart Git kurulumuyla yapmanın bir yolu olmalı, değil mi?
binaryorganic

Üzgünüm pencerelerde çalışmıyorum, sadece linux. Ancak anahtarın SSH temsilciniz olması gerekir. Bu aracı boyunca bir agent.exe veya bir şey var mı?
Declan Shanaghy

1
Evet, kurulum linux tarafında pastaydı. Ama ne yazık ki Windows üzerinde de çalışmasını sağlamalıyım. Windows kutusundaki git / bin klasöründe ssh ile ilgili birkaç yürütülebilir dosya var (ssh, ssh-add, ssh-agent, ssh-keygen ve ssh-keyscan), ancak bunlardan herhangi birinin nasıl yapılacağını bilmiyorum birşeyler yap. Hemen bir cmd penceresini açıp kapatıyorlar. Şoktayım.
binaryorganic

8
Pageant gerçekten benim için sorunu çözüyor - Başlat Menümün Başlangıç ​​klasöründe ( C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) işaret eden bir kısayol var "C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk", böylece başlangıçta SSH anahtarlarımı yüklüyor ve bu GIT'i "sadece çalışıyor" yapıyor: o)
Owen Blacker

@OwenBlacker OMFG! Sen kesinlikle gereken tam boyutlu olarak bu görüş bildirmek cevap ! Buradaki tek çözüm bu, bana gerçekten yardımcı oldu ve sorunumu çözdü! Yazık, sana sadece +1 verebilirim! :]
trejder,

6

Benim durumumda Docker'ın kapsayıcısında Git for Windows kullanıyordum windowsservercore.

Benim Git tarafından yüklenen chocolatey için C:\Program Files\Git.

Dosyayı C:\Program Files\Git\etc\ssh\ssh_configşununla güncellemek zorunda kaldım :

Host example.com
   Identityfile ~/.ssh/id_rsa

Sonra anahtarını kullanabiliyordum. C:\Users\<user>\.ssh\id_rsa

Git'i Windows için kullanıyorsanız, OpenSSH for Windows ile birlikte kullanın. Git hala kendi kullanıyor ssh.

Kullandığınız planlıyorsanız Artı ssh-keyscan host.com > known_hostsOpenSSH dan gelen boru çıkışı nedeniyle dikkatli olun stdoutve keyscan(Windows'da) UCS-2'nin kodlama değiştirir, ancak OpenSSH sadece UTF-8 okuyabilirsiniz! Bu yüzden known_hostsdosya kodlamasını değiştirdiğinizden emin olun .


Bu yardımcı oldu, ancak bir id_dsa anahtarı kullanan herkes için, ana makinenize "PubkeyAcceptedKeyTypes ssh-dss" eklemeniz gerekir.
Michael Russo

4

Tamam, önerisine baktım ..

Ama özel SSH anahtarlarımı ortak klasöre koymak iyi bir fikir değildi, bu yüzden bilinen ev sahibinin yerini aramaya başladım.

Dolayısıyla, SSH anahtarınızı doğru bir şekilde korumak istiyorsanız, anahtarınızı aşağıdaki dizine koymanız gerekir:

Windows 7, 8 ve 8.1 32 bit için:

C: \ Kullanıcılar \\ AppData \ Local \ VirtualStore \ Program Dosyaları \ Git \

Windows 7, 8 ve 8.1 64 bit için:

C: \ Kullanıcılar \\ AppData \ Local \ VirtualStore \ Program Dosyaları (x86) \ Git \


Win7 makinemdeki en basit çözüm buydu. Senin gibi ben aradım known_hosts. Elbette, içerideydi C:\Users\Dave\AppData\Local\VirtualStore\Program Files (x86)\Git\.ssh. Anahtar dosyamı (id_rsa) bu dizine yerleştirerek, ssh şikayet etmeden bulabildi. Biraz okuma yaptım - bu, Windows'un (eski) yazılımların yasak alanlara ("C: \ Program Files \" gibi) yazmaya çalıştığını nasıl ele aldığını, bu yüzden Git'in ssh, VirtualStore dizinine yazdığından tamamen habersiz. bunu şeffaf bir şekilde ele alıyor. En azından bu dosyalar bir kullanıcıya ait!
DaveGauer

4

En etkili yol Pageant'ü kullanmaktır çünkü her basış yerine sadece bir kez parolayı oturumun başında yazmanıza izin verecektir. Buradaki tüm cevaplar çok kısaydı, bu yüzden burada ayrıntılı bir rehber göndereceğim:

  1. İndir pageant.exe, puttygen.exe, putty.exeve plink.exePuTTY web sitesinden. Bunları C:\puttyToolsdizine yerleştirin.
  2. Run puttygen.exe.
  3. Düğmesine tıklayın Generate.
  4. Program sizden istediği gibi, ilerleme çubuğu dolana kadar fareyi pencerenin üst kısmına oynatın.
  5. Bir parola girin ve sonraki metin kutusunda tekrarlayın.
  6. "Özel anahtarı kaydet" i tıklayın. Bunları kaydetmemiz gereken genel dizin şudur %USERPROFILE%\_ssh(bilgisayarımda bu eşleşir C:\Users\andres\.ssh\). Anahtar ne dediğiniz önemli değil, ancak gösteri amaçlı olarak ben onu arayacağım github.ppk. Bu dosyanın uzantısı .ppk olmalıdır.
  7. Metni, etiketli olan PuTTYgen'deki üst metin kutusuna Public key for pasting into OpenSSH authorized_keys filekopyalayın ve GitHub'ın ayarlarında yeni bir SSH anahtarına yapıştırın. Anahtarın hangi makinede olduğunu açıklayan bir başlık verin (örneğin, "Çalışma dizüstü bilgisayarı").
  8. Çalıştır pageant.exe, yeni bir systray simgesi görünecektir.
  9. Simgeye sağ tıklayın -> Anahtar ekle.
  10. Ppk dosyanızı bulun, parolanızı girin.
  11. Bu yeni kullanıcı ortamı değişkenlerini oluşturun ( Environbulacağınız WindowsMenu üzerinden uygulama arayarak Edit environment variables for your account): GIT_SSH = "C:\puttyTools\plink.exe"veSVN_SSH = "C:\puttyTools\PuTTY\plink.exe"
  12. Putty.exe dosyasını açın ve Git veri havuzlarınızı barındıran ana bilgisayara bağlanmayı deneyin. Örneğin, github.com'a SSH üzerinden bağlanmayı deneyin ve bir iletişim kutusu size sunucunun parmak izini kabul edip etmediğinizi soracak: EVET üzerine tıklayın.
  13. MINGW64Git konsolunuzun yeni bir örneğini çalıştırın ve komutu yazarak ortam değişkenlerinin orada olduğunu doğrulayın env | grep -i ssh.
  14. Tamamen hazır olmalısın. Ana makinenizden Git + SSH protokolüyle klonlamayı deneyin.

(Başlangıçta bir araya getirdiğim bu iki kılavuzdan çıkarılanlar: Windows için Git nasıl kurulur ve MinGW-W64 + MSYS'yi PuTTY Plink / Pageant kullanacak şekilde yapılandırma .)


3

Windows için GitHub ve Windows için Git GUI’yi karıştırırken, Git GUI’nın sizi bir kullanıcı adı ve şifre sormaya devam ettiği sorunlarla karşılaşabilirsiniz. Bunun tedavisi, uzak URL’yi https:(Windows için GitHub’ın oluşturduğu şey) Git protokolüne değiştirmektir. Gelen .gityapılandırma dosyasında dizinde bulmak:

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

Şuna değiştir:

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

Evet çok can sıkıcı. Windows GUI için github içeren bir repo klonlamak doğal ve kolaydır, ancak git shell dışında git cui kullanıldığında başarısız oldu. Git kabuğundaki git komutunun https url ile nasıl çalıştığını merak ediyorum ...
hiroshi

SSH için her zaman önek git@{SERVER URL}nedir?
nmz787

Evet, bildiğim kadarıyla şimdiye kadar :) gördüğümüz gibi
ıdisposable

Zaten bu vardı - hala her zaman bana soruyor
Ian Grainger

3

Dosyaların standart konumu %USERPROFILE%\.ssh.

%USERPROFILE%Unix'deki $ HOME değerine eşittir (normalde bunun gibi bir şeyle eşleşir c:\users\youruserid).

Eğer standart komut satırı Unix tarzı araçları vardır Git birlikte gelen SSH araçları kullanıyorsanız, gibi bir şey kullanabilirsiniz burada senaryoma tüm kabukları arasında ssh-agent ile çalışmak.


Gelecekteki okuyucular için %USERPROFILE% is the equivalent of $HOMEolduğu değil eşdeğer $HOME. Kötü oyunculuk Linux Bir sürü ikisinin t, Windows tedavi için aynı e taşıdık sahip uygulamaların ancak gerektiği değil aynı kabul edilir.
Micah Zoltu

Micah, niyetindeki farklılıkları bildirir misin? Ayrıca, farklı amaçlarla bile olsa, tüm araçlar birbirini kullanırsa, o zaman etkili bir şekilde eşdeğer olmaz mı?
Eric Blade

%USERPROFILE%Windows'ta $HOMELinux ile aynı şekilde kullanılan araçlar, Windows gelişimi için iyi belgelenmiş en iyi uygulamaları / önerileri ihlal ediyor (MS tarafından uzun zaman önce yayınlandı ve zaman içinde güncellendi). Bunu yapan birçok araç var, ancak onları takip etme argümanı "Havuzdaki X pees, yani biz de olmalıyız" argümanına çok benziyor. USERPROFILEkullanıcı belgeleri depoladığı nerede onlar oluşturmak / kaydetmek (örneğin iletişim kaydedin). APPDATAKullanıcı başına yapılandırma verileri içindir. LOCALAPPDATAKullanıcı başına önbellek ve büyük dosyalar içindir. PROGRAMDATAMakine genelinde yapılandırma ve önbellek içindir.
Micah Zoltu,

Genel olarak, USERPROFILE ile uygunsuz davranışta bulunan araçlar, Linux geliştiricileri tarafından yazılan ve ardından Windows'a taşınan araçlardır. Bir geliştirici olarak, muhtemelen bunlardan çok kullanıyorsunuz, bu yüzden "herkes yapıyor" gibi geliyor , ancak geliştirme aracı ekosistemi dışında çoğu Windows uygulaması aslında iyi vatandaşlar. Microsoft bile bazen işleri doğru yere koymamakta hata yapar (çok büyük bir şirkettir), ancak genel olarak onlara dikkatinizi çektiğinizde sorunu çözmek ve işletim sistemi kurallarına uymak için çaba gösterirler.
Micah Zoltu,

1
(üzgünüm, StackExchange karakterin yorumdaki limitleri). İşte klasörler hakkında daha fazla ayrıntı ve her birine neyin girdiğinin kısa bir açıklaması. Orada diğer kaynaklar daha sarf blog gönderileri de dahil olmak üzere, hem de vardır, ama bu en teknik doğruluk sunmaktadır: technet.microsoft.com/en-us/library/cc749104(v=ws.10).aspx
Micah Zoltu

2

Benzer sorunlar yaşadım ve buradaki cevapların hiçbiri sorunu çözmedi. Anlaşılan, anahtar çiftim aslında boş bir parola ile oluşturuldu. (Biliyorum aptal.)

Yeni bir keypair oluşturup ortak anahtarı GitHub'a yükledikten sonra işler tekrar çalışmaya başladı.


1
bu. ughhhhhhhhhhhhh. güle güle 2 saat
Scoop


1

Hem anahtarın yolunu hem de anahtar dosyasının adını (Ubuntu'da) belirtebilirsiniz. Örneğin:

ssh -i /home/joe/.ssh/eui_rsa

Bu kesinlikle sorunu çözer ve anahtarlarınızı istediğiniz yerde saklamanıza izin verir.
DaveGauer

Soru özellikle pencerelerle ilgiliydi. Ubuntu makinemde bu şekilde çalışıyorum ama GIT_SSH_COMMANDWindows makinemde ne ayarlayacağımı bilemiyorum .
mjaggard

1

Pageant ( PuTTY paketi ile birlikte verilen bir SSH ajanı ) benim için problemi çözdü.

Başlat Menüsü'ndeki Başlangıç ​​klasöründe ( C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) işaret eden bir kısayolum var "C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk", böylece başlangıçta SSH anahtarlarımı yüklüyor ve bu da Git'in "çalışmasını" sağlıyor: o)


4
Bunun çalışması için doğru olan birkaç ayara ihtiyaç duyduğunuzu düşünüyorum (Sanırım TortoisePLink.exe'ye ayarlanmış GIT_SSH gibi?) Ve geçmişte benim için çalışmış olmasına rağmen, sık sık diğer makinelerde de sorun yaşıyorum. :-(
Simon Doğu

Pageant: 'Dosya açılamıyor' alıyorum :( TortoiseGit için kullandığımdan emin olduğum doğru bir şekilde ayarlanmış :(
Ian Grainger 09.02

1

Birçok cevap bunu söylüyor ama benim için yeterince hızlı değil!

msys kullanan pencerelerde (standart Windows konsolu) C:\Users\{you}\.ssh\id_rsa

Temelde yüklü anahtarları taramaktan rahatsız olmaz (en azından yeni dizüstü bilgisayarımda değil) ve id_rsa

Windows 10 64-bit için bazı özel iş repo yakut MSYS CLI klonlamak isteyen bu karşılaştı


0

Windows 7 / 8’de iseniz, C: \ Users \ Your_User_Name.ssh C’ye bakmanız gerekir. Sadece id_rsa dosyanızı buraya kopyalayıp yapıştırın, hepsi bitti.


0

Windows'ta SSH kullanırken yaptığım bir hata, Git Bash istemcisi aracılığıyla anahtarları kullanmaya çalıştığımda, ~ / .ssh içindeki tüm dosyaların yanlış izinler olduğuydu, ancak bunun bana bir şey olduğunu söylemedi. sorun.

Test olarak, ~ / .ssh dizininizdeki her şeyi chmod 600'e ayarladığınızdan emin olun.


0

Windows makinede gerekli izinlere sahipseniz ve politikalarınız izin veriyorsa , özellikle Linux ile daha önce deneyime sahip olduğunuzu düşünerek Cygwin'i ( https://cygwin.com/ ) yüklemenizi öneririm . Cygwin, ssh tuşlarını diğer Linux / Unix makinelerinde olduğu gibi kullanabilmenizi sağlayacaktır. Ve Linux'un neredeyse tüm cli araçlarına erişim sağlar.


1
Bu tür önerilerde bulunmak, yorum yapmak için kesinlikle mantıklıdır. Ancak, soru açıkça Windows için git istediğinde, bunu bir cevap olarak yayınlamak için oy kullanmalısınız.
soymak

0

TortoiseGit, bir havuzu klonlarken kullanılacak anahtarı belirlemenizi sağlar. "Putty Key'i Yükle" yi kontrol edin .ppkve ekran görüntüsündeki gibi dosyaya göz atın :https://i.stack.imgur.com/lAyzT.png


Eğer devre dışı bırakılırsa, kontrol 11Settings... -> Network -> SSH clientC:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
49'da

0

Yukarıdaki sorunu oluşturarak düzelttim

~ / .Ssh / yapılandırma

dosya ve koy:

IdentityFile C:\Users\adria\.ssh\mysshkey

0

Yorumunuzu Declan'ın cevabına okurken, önce bir komut istemi açmayı deneyin (Başlat → Çalıştırcmd ) ve ardından git / bin klasörüne gidin ve çalıştırın ssh-keygen. Teorik olarak bu bir RSA anahtarı üretecek ve uygun dizine yerleştirecektir. O zaman onu bulup ortak anahtarınızı dünyayla paylaşmanız gerekiyor.

Pencerenin "yanıp sönmesi" sebebi, Windows programını çalıştırması ve yürütüldüğü zaman, gerçekten çıktıya ihtiyaç duyduğunuzda, bittiğini düşünerek komut istemini kapatmasıdır.


0

Windows'ta Git Gui'nin v0.17'sini kullanarak Aşağıdaki menü komutunu tıklattım: YardımSSH Anahtarını Göster .

OpenSSH Genel Anahtarınız başlıklı bir iletişim kutusu açıldı . Bir anahtar oluşturdum ve panoya kopyaladım. Sonra kurulum-ssh talimatları takip devam githelp gelen Adım Üç itibaren. Daha sonra Git Gui, GitHub ile sessizce iletişim kurdu - herhangi bir kimlik bilgisi girmenize gerek yok.


0

Windows 7 sistemimde Git Gui, userprofile/.sshklasördeki RSA anahtarını veya daha spesifik olarak arar c:/users/yourusername/.ssh/.

Kurulumumun en zor yanı, hostmonster'daki paylaşılan konağın anahtarı kabul etmesiydi. Çalışabilmemin tek yolu, anahtar çiftleri (şifre olmadan) oluşturmak için Git Gui'yi kullanmak ve ardından genel anahtarı kontrol paneli, ssh, yönet tuşları aracılığıyla kopyalayıp yapıştırmaktı.

Başlangıçta Git Gui'de tuşları, Yardım , SSH anahtarını göster , ardından Anahtar Üret menüsüne giderek oluşturmanız gerekir . Şimdi .sshdizinde iki yeni anahtarın olacak . .pubDosyayı açın ve içeriği kopyalayın.

Paylaşılan ana bilgisayarda kontrol panelinize giriş yapın ve SSH , SSH anahtarlarını yönet ve Al anahtarına gidin . Genel kutusuna yapıştırın ve uzantı olmadan doğru adı adlandırdığınızdan emin olun - benimki id_rsa. Şimdi anahtarı yönet yetkilendirme bağlantısını kullanarak yetkilendirmelisiniz, böylece authorized_keysdosyada birleştirilir .

Artık Git Gui'niz ve Git Bash'iniz, şifreyi girmek zorunda kalmadan SSH'yi kullanarak itebilmelidir. Garip bir şekilde, SSH'yi Git Bash ve Git Gui üzerinden Linux kullanan kendi sunucularımda kullanabiliyordum. Umarım bu bana yardım etmek için saatlerce süren deneme yanılmalarından biriyle yardımcı olur - ve bu kadar basit!


0

Git komut satırını Windows için kullanıyorsanız, aşağıdakileri yapabilirsiniz:

Açın cmd.exeve yürütmek setx HOME c:\PATH_TO_PRIVATE_KEY.

Yeni bir klasör oluşturun .ssh, (varsa) içinde oluşturun c:\PATH_TO_PRIVATE_KEYve id_rsadosyanızı (özel anahtarınız) kopyalayın .

Bitti. Şimdi Git komut satırını normal olarak kullanabilirsiniz.


0

Benim msysgit OpenSSL / Bash Git deneyimi (değil PuTTY en plink) sizin için arama emri olduğunu .ssh/şöyle klasörde olduğunu.

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

Bu nedenle neden bu kadar çok insan HOMEdiğerlerinden birinin beklediğiniz gibi olmadığını belirlemeyi öneriyor . Daha da önemlisi, kendiniz kontrol edebilirsiniz; ssh -vaşağıdaki gibi genel anahtar kimlik doğrulaması kullanan bir sunucuda hata ayıklamak için :

$ ssh -v git@github.com
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.

Bulduğumuz sshbilinmeyen bir sürücüde arama ve önceki cevapların hiçbiri gördüğümüz açıklamak gibiydi.

Bazen ağ / dosya sunucusu sorunları olduğunda , yerel olarak anahtarlar olsa ve anahtarlara sahip olduğunda gereksiz hatalara neden olan %HOMEDRIVE%%HOMEPATH%eşlenmiş bir ağ sürücüsüdür (örn. H:/) . Ayar için uzaktan ev sürücüye bakarak durur.%USERPROFILE%/.sshC:/Users/Username/.ssh%HOME%%USERPROFILE%


0

Ayrıca PuTTY Agent'ı (gösterimi) yükleyebilir ve PuTTY ile oluşturduğunuz özel anahtarı sunucuya ekleyebilirsiniz.

Git bunu tanır ve bunu push / pull için kullanır.


0

İhtiyaca bağlı olarak TortoiseGit ve Windows'ta Git Bash kullanıyordum. TortoiseGit'e her şeyi ekledim ve iyi çalıştı, ancak tuşlar doğru dizinde olmasına rağmen Git Bash onu seçmedi. Görünüşe göre bunu Git Bash'ten yapmak zorunda kaldım:

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

Elbette \\, ayırıcı olarak kullanmayı hatırlayarak, anahtarınızın bulunduğu yere giden yolu değiştirebilirsiniz .


0

Git için Windows kullanıyorsanız, SSH anahtarları oluşturulduktan sonra, ssh-agent'a SSH anahtarınızı eklemelisiniz.

Yeni bir SSH anahtarı oluşturma ve ssh-agent'a ekleme bölümüne bakınız .

eval $(ssh-agent -s)

// Tell where the keys are located

ssh-add ~/.ssh/id_rsa

Sunucu Arızasına Hoşgeldiniz. Bu sorunun zaten birkaç yıl önce kabul edilen yaygın olarak kabul edilmiş bir cevabı var. Yeni sorular veya önemli ölçüde geliştirilebilecekler aramaya devam edin.
Matthew Wetmore

1
yaygın olarak kabul edilen cevap benim için işe yaramadı, oysa bu cevap verdi. Anahtarın ssh acentesine eklenmesi gerektiğini bilen birine yardım edebileceğine ve 2 talimat satırıyla yapılabileceğine inanıyorum
Matoeil
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.