github: Desteklenen kimlik doğrulama yöntemi yok


100

github kullanıyorum ve geçmişte dizüstü bilgisayarıma başarıyla dosya ekledim ve senkronize ettim.

son zamanlarda çalıştırdıktan sonra " PuTTY Önemli Hata: Bağlantı Kesildi: Desteklenen kimlik doğrulama yöntemi yok " mesajını almaya başladım :

git pull origin master (veya push)

ancak

ssh git@github.com doğru yanıtı döndürür: HATA: Merhaba kullanıcı adı! Kimlik doğrulamasını başarıyla yaptınız ancak GitHub, github.com'a kabuk erişimi Bağlantısı sağlamıyor kapalı.

github'da kazı yaptıktan sonra şu morcel buldum:

Desteklenen kimlik doğrulama yöntemleri yok ssh sizin için çalışmazsa, git tarafından ssh konuşan istemcinizi bulmak için kullanılan ortam değişkeni GIT_SSH'nin farkında olmalısınız. Git kurulumu, kimlik doğrulamayı gerçekleştirmek için plink.exe'yi (GIT_SSH aracılığıyla) kullanıyor olabilir. Öyleyse, pageant.exe'nin çalıştığından ve github için oluşturduğunuz anahtarın ona yüklendiğinden emin olun. Bu, plink.exe'nin anahtarını sağlar; onsuz yukarıdaki hata ortaya çıkacaktır.

plink.exe veya peagant.exe'nin ne olduğundan emin değilim .. ve ssh git@github.com'un doğru bir şekilde kimlik doğrulaması yapıyor gibi görünmesi, buradaki en iyi çözümün ne olduğunu merak etmeme neden oluyor .. Aksi halde kurulumumu kesinlikle fazla karmaşık hale getirmek istemiyorum gerekli.

Yanıtlar:


101

Ana dizininizde ".profile" adlı bir dosya oluşturabilirsiniz, benim için bu C: \ Users \ [kullanıcı]

Bu dosyanın içine aşağıdaki kod satırını koyun:

GIT_SSH="/usr/bin/ssh.exe"

Bu, git ile birlikte gelen ssh istemcisini kullanmak için GIT_SSH ortam değişkenini ayarlayacaktır.

.Profile betiği Git Bash komut satırınızı başlattığınızda çalıştırılır.

Düzenleme: Bu benim .profilim. Git komut istemini ilk kez başlattığınızda sizden şifrenizi soracak ve daha sonra bilgisayarınızı yeniden başlatana kadar bunu hatırlayacaktır. Çok kullanışlıdır, böylece her bir şey yapmak istediğinizde şifrenizi girmeye devam etmek zorunda kalmazsınız.

SSH_ENV="$HOME/.ssh/environment"
GIT_SSH="/usr/bin/ssh.exe"

function start_agent {
echo "Initializing new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add;
}

# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} doesn't work under cygwin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi

8
+1 Git'in ssh ihtiyaçları için Putty / Pageant kullanırken sorun yaşamadım. Yerleşik ssh istemcisini kullanmak harikalar yaratır. Bu, ssh git@github.com'un, onu kendiniz çalıştırırsanız neden iyi döndürdüğünü açıklar, ancak git'in yapılandırılmış araçları (Putty / Pageant) kullanmasına izin vermeyin.
enriquein

14
Benim için bu sadece GIT_SSH = "/ bin / ssh.exe" (Windows'ta). Teşekkürler!
Martin Konicek

1
@Justin mingw32 komut istemini mi kullanıyorsunuz?
Rex Morgan

2
Windows 7'de cygwin kullanarak, yukarıdaki cevabı çalıştı ama gerekli GIT_SSHetmek .bash_profiledeğil.profile
Gabe

2
Benim durumumda Git Bash kullanan Windows 10GIT_SSH="D:\Program Files\Git\usr\bin\ssh.exe"
PaulH

32

TortoiseGit Kullanımı

TortoiseGit> Ayarlar ... Ağ ... SSH İstemcisi: C:\Program Files\Git\usr\bin\ssh.exe

Yerim değişir. Bir bilgisayardaC:\Program Files (x86)\Git\bin\ssh.exe

kaplumbağa


5
Teşekkürler. bu çalıştı. not: belirli bir makinede 'ssh.exe'nin tam olarak nerede yaşadığını araştırmanız gerekebilir. benim için C: \ Program Files \ Git \ usr \ bin \ ssh.exe idi (muhtemelen güncel olmayan bir makinede)
pestophagous

10

"... plink.exe veya peagant.exe'nin ne olduğundan emin değilim ..."

Sorduğunuzdan beri: plink & pageant, Linux ve Windows'u destekleyen ve Windows'da tamamen baskın olan bir SSH uygulaması olan PuTTY paketinin bir parçasıdır.

SSH

Secure Shell (SSH), veri iletişiminin güvenliğini sağlamak için bir kriptografik ağ protokolüdür. Bir istemci-sunucu mimarisinde güvenli olmayan bir ağ üzerinden güvenli bir kanal kurar ve bir SSH istemci uygulamasını bir SSH sunucusuna bağlar. Yaygın uygulamalar arasında uzaktan komut satırında oturum açma, uzaktan komut yürütme bulunur, ancak herhangi bir ağ hizmeti SSH ile güvence altına alınabilir.

Telnet'i daha önce kullandıysanız, bu böyledir (ancak daha güvenlidir): bir Linux ana bilgisayarının bash kabuğuna (komut satırı) uzaktan erişmenizi sağlar.

Macun

PuTTY, ücretsiz ve açık kaynaklı bir terminal emülatörü, seri konsol ve ağ dosya aktarım uygulamasıdır. SCP, SSH, Telnet, rlogin gibi çeşitli ağ protokollerini destekler ...

Windows'ta, bir Linux ana bilgisayarının komut satırına SSH protokolü (yukarıda) altında uzaktan erişmek için en yaygın yazılımdır. Windows'ta .exe uzantıları yürütülebilir dosyalar içindir. Dolayısıyla, plink.exe ve pageant.exe ile ilgili notlar, Linux'taysanız muhtemelen geçerli değildir . PuTTY şunları içerir:

Plink : PuTTY arka uçlarına bir komut satırı arayüzü

Pageant : PuTTY, PSCP ve Plink için bir SSH kimlik doğrulama aracı

Gönderen ( http://en.wikipedia.org/wiki/Secure_Shell#Key_management )

Ortak anahtar uzak uçta bulunduğunda ve eşleşen özel anahtar yerel uçta mevcut olduğunda, artık parolanın yazılmasına gerek yoktur ... ek güvenlik için özel anahtarın kendisi bir parola ile kilitlenebilir.

Dolayısıyla, github bir Linux makinesinde barındırılır ve bağlantıyı güvence altına almak için SSH kullanır. SSH, parolalarla veya anahtarlarla kimlik doğrulaması yapar, birçok ana bilgisayar (github?) Yalnızca anahtarlarla kimlik doğrulaması yapar. Kurulumunuz görünüşe göre bir anahtarla kimlik doğrulamaya çalışıyor. Anahtarlar ve ana bilgisayarlar bire bir değildir: aynı ana bilgisayar için iki anahtarınız ve / veya aynı anahtar için iki ana makineniz olabilir, bu nedenle bunların yönetilmeleri gerekir. Windows'daysanız, SSH oturumunuza muhtemelen plink aracılığıyla erişilir ve anahtarlarınız muhtemelen Pageant tarafından yönetilir.

Pageant'ı her yüklediğinizde ihtiyacınız olan anahtarı içe aktarın. "Anahtarınızı içe aktarın" yazan kılavuzları izlediyseniz ve çalıştığını gördüyseniz, ancak şimdi çalışmıyorsa, bkz. Bölüm 9: Kimlik Doğrulaması için Pageant Kullanımı .

Windows kullanıyorsanız son bir ipucu: PuTTY paketinin çeşitli araçlarla yüklü birden çok örneğine sahip olabilirsiniz. Örneğin, TortoiseGit kendi kurulumunu yapar.


8

Bu sorunu yaşadım çünkü benim GIT_SSHTortoiseSVN sürümüne işaret ediyordu Plink.exe. TortoiseGit versiyonunu gösterecek şekilde değiştirdim, cmd'yi yeniden başlattım ve işe yaradı.

Tam olarak hatırlayamıyorum, ancak TortoiseSVN sürümü 32-bit olabilir ve TortoiseGit sürümü 64-bit (içinde bulunur Program Files, değil Program Files (x86)).

GIT_SSHEnv var'nızı iki kez kontrol edin .

cmd.exeGit'i normal olarak kullanmayı tercih ediyorum (tabii ki Console2'de)


Doğru hatırlıyorsun; TortoisePlink.exe'nin 32-bit TortoiseSVN versiyonunu gösteren GIT_SSH ile aynı sorunu yaşadım. TortoiseGit'in sürümüne taşımak işe yaradı.
nitwit

6

Windows'ta TortoiseGit Kullanıcıları için

Başlangıçta, TortoiseGit'in her bir eylemde parolanızı istemesini engellemenin tek uygun yolu olduğu için SSH depo URL'lerini (orijinal olarak) kullanarak Github / Bitbucket depolarımın çoğunu kuruyordum .

Ancak TortoiseGit'i bu şekilde ayarlamak her zaman tüyleri çekecek kadar acı vericiydi. Her seferinde doğru kurulum saatlerimi aldı , çünkü varsayılan kurulum seçenekleri hiçbir zaman işe yaramadı (2016 itibariyle bile, sheesh!).

Ancak TortoiseGit artık HTTPS için daha iyi parola yönetimine sahip ve Github aslında mümkün olan her yerde HTTPS URL'lerinin kullanılmasını tavsiye ediyor .

SSH URL'si: git@github.com:User/repo-name.git

HTTPS URL'si: https://github.com/User/repo-name.git

HTTPS'nin faydaları şunlardır:

  • SSH anahtarlarının yönetilmesi veya oluşturulması yok
  • pageant.exeSürekli çalışmaya gerek yok (her açılışta şifreniz isteniyor)
  • Avustralya'dan TortoiseGit kullanarak, HTTPS üzerinden klonların SSH'den 5-10 kat daha hızlı olduğunu buldum

+ 'git config --global http.sslVerify false'
Mike

5

Pageant kullanıyorsanız ve PC'nizi yeniden başlattıktan sonra (veya Pageant'ı kapatıp yeniden açtıktan sonra) soruda açıklanan hatayı alıyorsanız:

Hata, Pageant'ın GitHub SSH anahtarınızın aktif olarak yüklenmemesinden kaynaklanabilir. Varsayılan olarak, Pageant başladığında önceki oturumun anahtarlarını otomatik olarak YÜKLEMEZ.

Anahtarı yüklemek için:

  1. Pageant'ı açın. (Windows'ta, Pageant çalışıyorsa, sistem tepsisinde bir simge olacaktır. Bunu çift tıklayın.)
  2. Anahtar Ekle düğmesini tıklayın ve mevcut GitHub SSH anahtarınızı eklemeye devam edin.

Gelecekte bu sorunu önlemek için, Pageant'ı, başlatıldığında anahtarınızı otomatik olarak yükleyecek şekilde yapılandırabilirsiniz. (Anahtarınız parola korumalıysa Pageant otomatik olarak bir parola girmenizi isteyecektir.)

Bunu yapmak için adımlar (zaten Pageant'ı Windows başladığında çalışacak şekilde yapılandırmış olduğunuzu varsayarak):

  1. Windows başladığında Pageant'ı çalıştırmak için Windows'un kullandığı kısayolu bulun. (Başlat> Çalıştır> ile açılabilen Başlangıç ​​klasöründe olabilir shell:startup)
  2. Kısayolun Özellikler iletişim kutusunda, SSH anahtar dosyasının tam yolunu ve dosya adını "Hedef" alanına ekleyin.

Referans ve tüm ayrıntılar: http://blog.shvetsov.com/2010/03/making-pageant-automatically-load-keys.html


4

Sorunum, github kullanıcı adımı kullanmaya çalışıyor olmamdı. Görünüşe göre Github kullanırken (veya bu bir Git şey mi?) , Anahtar tabanlı kimlik doğrulaması kullanıyorsanız, kullanıcı adınızı olarak ayarlamanız gerekir git.

Neden bir kullanıcı adına ihtiyacınız olduğundan emin değilim - belki daha bilgili biri bunu açıklayabilir?


Özel bir depoyu klonlarken, git@github.com: username / Repository.git gibi bir URL olacaktır. Bunun arkasındaki bilimden de tam olarak emin değilim ama görünüşe göre git her Github hesabı için genel bir kullanıcı adı
Winter

1
PLink / Pageant iyi çalışıyor. Asıl mesele bu ve benzer bir şey kullanmak ssh://git@github.com/myname/repo.githarika olacak. İyi iş. Nedenine gelince, bunun güvenliği kilitlemek olduğunu varsayıyorum. 'Git' kullanıcısının oturumu devre dışı bırakılmıştır, bu nedenle hiç kimse bu şekilde sisteme giremez. Onlar Github bile konuşmak için geçerli bir anahtara sahip olması ve geçerli bir anahtara sahip bir kez, bunları giriş yapmak için kullanıcı karşı eşleşebilir.
ChokesMcGee

3

Windows 8'de benim için çalıştı: GIT_SSH değişkeni plink.exe'yi işaret ediyordu, Sistem ayarlarında ssh ikilisini işaret edecek şekilde değiştirildi ve bu sorunu çözdü. Ssh'nin tam yolunu bulmak için şunu çalıştırın:

where ssh

2

Git 1.8.3.msysgit.0 sürümünü kullanan Windows için Github çalıştıran Windows 7 makinemde. Sistem ortam değişkenimi GIT_SSH'yi C: \ Program Files (x86) \ Git \ bin \ ssh.exe olarak güncellemenin hile yaptığını buldum. Bu aynı zamanda OpenShift'in git deposuyla iletişim kurma sorunumu da çözdü.


2

Bu sorunu çözmek için yaptığım buydu.

Windows 10'da Git Bash kullanıyordum

Yarışmaya başladım, Anahtar Ekle'ye bastım,

görüntü açıklamasını buraya girin

C: \ Users \ kullanıcıadı \ .ssh klasörüne gittim ve anahtarımı seçti

görüntü açıklamasını buraya girin

Daha sonra git itme yapmaya çalıştım ve bu sefer işe yaradı.


Unutmayın, muhtemelen Windows PC'nizi her yeniden başlattığınızda bunu yapmanız gerekecek - Pageant'ı başlangıç ​​klasörünüze, özel anahtar dosyanıza doğru komut satırı argümanını içeren bir kısayol olarak koyabilirsiniz, ancak bilgisayarınızda bir parola belirlediyseniz özel anahtarı oluşturduğunuzda, araç tepsinizdeki Yarışmacı simgesine sağ tıklamayı, "Anahtar ekle" yi seçmeyi ve her yeniden başlatmanın ardından doldurmayı hatırlamanız gerekir.
webbje


1

Aynı sorunla karşılaştım, ancak GIT_SSH çözümü benim için bir kez işe yaradı. Bir bilgisayar yeniden başlatıldıktan sonra, özel depolarımı Git Bash veya Komut İstemi kullanarak sorunsuz klonlayabildiğim, ancak SublimeGit eklentisiyle Sublime Text 3'te klonlayamadığım için bunun başka bir şey olduğunu fark ettim. Çözümüm basitti ve aslında @BlueRaja - Danny Pflughoeft'in bahsettiği şeydi, ancak biraz yön verebileceğini düşündüm;)

Temel olarak ~/.ssh/config, kullanıcı adını düzenlemeniz ve olduğundan emin olmanız gerekir git. Ayrıca, Github için belirli bir SSH anahtarı kullanmasını da söyleyebilirsiniz - Dosyam ~/.ssh/configaşağıdaki gibi görünür:

Host gh
    Hostname github.com
    User git
    IdentityFile ~/.ssh/github_rsa.pub

Gün boyunca yaptığım diğer şeylerin sayısı nedeniyle Github için belirli bir anahtarım var, ancak yalnızca bir anahtarınız varsa, o zaman genellikle Github'ın burada açıkladığı~/.ssh/id_rsa.pub gibi olacaktır .

Herkesin farklı bir çözümü olduğunu biliyorum, ancak bu makaleyi düzeltme olmadan karşılaşabilecek herkes için bunu burada bırakacağım. İyi şanslar!


1

GitHub'dan bir depoyu klonlamak için TortoiseGit'i kullanırken bu hatayı aldım. "Putty Key Yükle" tıklanarak ve Git klon diyalog penceresinde bir anahtar dosyası (* .pkk) seçilerek düzeltildi.



0

Git uzaktan kumandam düşündüğüm gibi olmadığından bu sorunu aldım (doğrudan ssh çalıştı, ancak git çekme başarısız oldu).

Evet, evet, aptalca bir hata olduğunu biliyorum, ama oluyor ve kontrol etmeye değer.

Kullanım git remote -v


0

GitExtensions'ı 3.3.0.7719 sürümüne güncelledikten sonra benzer bir sorun yaşadım

Bir şekilde kimlik doğrulama ayarlarımı OpenSSH yerine PuTTY kullanmak için geri döndürdü.

Bu versiyonda, OpenSSH'yi tekrar etkinleştirmek için kullandığım menü:

görüntü açıklamasını buraya girin

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.