Git, uzak GitHub deposuna yanlış kullanıcı olarak gönderiliyor


82

Bir iş GitHub hesabım ve kişisel bir hesabım var. Önce kişisel olanı test projeleri için kullandım, sonra devam ettim ve aynı bilgisayardaki diğer hesapla bir depo yaptım.

Şimdi kişisel hesabımda tekrar yeni bir depo oluşturmak istedim, global ve yerel user.nameolanı değiştirdim ve GitHub kurulum sayfasına girilen yeni bir ssh anahtar çifti yaptım. Sonra dizini kurdum

git init
git remote add origin <url>
git push origin

ama bu şimdi bana söylüyor

HATA: kişisel kullanıcı / newrepo.git izni reddedildi

Diğer hesabın buna nasıl bağlı olduğu hakkında hiçbir fikrim yok. ilgili .git/confighiçbir workusernameşey göstermez .

Windows 10 kullanıyorsanız Rajan'ın cevabını okumak için zaman ayırın.


1
Windows 10 için aşağıda yanıtlayın. Kimlik bilgileri yöneticisinden kimlik bilgilerini kaldırın. 2 saat boşa harcandı.
xenteros

@xenteros Lütfen bunu bir yanıt olarak gönderin. 1 saat kaybettim ve sen beni 1 saat daha kurtardın.
lexicore

Yanıtlar:


76

bu, mevcut çalışma kurulumuma çok benziyor. Görünüşe göre zaten ayrı ayarlamışsınız, ssh-keysbu nedenle bir ~/.ssh/configdosya oluşturmanız ve buna benzer bilgilerle doldurmanız gerekir:

Host work.github.com
    HostName github.com
    User WORK_GITHUB_USERNAME
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_work_rsa
    IdentitiesOnly yes

Host personal.github.com
    HostName github.com
    User PERSONAL_GITHUB_USERNAME 
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_personal_rsa
    IdentitiesOnly yes

Her özellik oldukça açıklayıcı geliyor ama IdentitiesOnlybiri. Bunun ne için olduğunu açıklamaya çalışmayacağım, ancak bu benim mevcut kurulumumda ve iyi çalışıyor.

Ayrıca Host URL, doğru kullanıcı ayarlarını almak için sadece bir işaretçi olduğunu ve dosyaları hedef HostNameURL'nize doğru bir şekilde alma üzerinde herhangi bir etkisi olmadığını belirtmek gerekir .

Şimdi , kullanıcı adınıza bağlı olarak, URL'nizin origin(veya remotegenel olarak herhangi birinin ) Hostilgili depolarınızdaki doğru url ile eşleştiğinden emin olmanız yeterlidir . Halihazırda kişisel depolarınız varsa, o deponun .git/configdosyasını metin düzenleyicinizde düzenleyebilirsiniz:

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

veya bunu komut satırı aracılığıyla yapın:

git remote set-url origin git@personal.github.com:PERSONAL_GITHUB_USERNAME/project.git

İşinize benzer şekilde:

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

veya yine komut satırı aracılığıyla:

git remote set-url origin git@work.github.com:your_work_organization/project.git

Tabii ki, her zaman birini ayarlayabilirsiniz Hostsizin de URL'ler ~/.ssh/configgibi dosyada

Host github.com

Ben sadece work.github.comyapılandırma ilişkilerini daha kolay görüyordum.

Bunların tümü ayarlandıktan sonra, her bir uzaktan kumandaya basabilmelisiniz.

DÜZENLE

Az önce öğrendiğim bir şey de, eğer değeriniz için global git config değerleri belirlerseniz user.email(ve sanırım user.namefarklı bir değer göndereceğini tahmin ediyorum), git'in taahhütlerinizi o e-posta kullanıcısı olarak göstereceği. Bunu aşmak için, yerel deponuzdaki global git yapılandırma ayarlarını geçersiz kılabilirsiniz:

$ git config user.name "John Doe"
$ git config user.email johndoe@example.com

Bu, şimdi bu repo için doğru kullanıcı olarak taahhütleri göndermelidir.


3
Tıkır tıkır çalışıyor. Teşekkür ederim!
NorthBridge

1
Bu site , ilgilenen herkes için ssh yapılandırma dosyasını daha kapsamlı bir şekilde açıklamaktadır .
Phil

3
Kesinlikle en yararlı cevap. Çok teşekkürler.
limp_chimp

Parlak! Çok teşekkürler!
Fydo

1
Eksik olan anahtar .git / config dosyasında ssh ana bilgisayarını belirtmekti - Çok teşekkürler!
xdotcommer

46

Denetim Masası> Kullanıcı Hesapları> Kimlik Bilgisi Yöneticisi> Genel Kimlik Bilgileri'ne gidin

git kimlik bilgilerini kaldırın. Ardından git push komutunu çalıştırın. Bu, git kimlik bilgilerini sormanızı isteyecektir. Doğru kimlik bilgilerinizi girin.


3
Bu, Windows10'da Git Bash'i çalıştırırken sorunumu çözdü. Teşekkürler @ rajan-patil
suspicious_williams

İngilizce olarak Windows control /name Microsoft.CredentialManager
GUI'sine sahip olmayanlar

garip, ancak sadece Git Bash'i başlattığımda harika çalışıyor (yukarıda belirtildiği gibi), ancak aynı terminali kullanmaya devam edersem git push, hatayla başladım - terminal yeniden başlatıldıktan sonra bile her zaman aynı hataları atmaya devam ediyor. Ama yine de teşekkürler - sonunda bana çok zaman kazandırdı
Kostyantyn Didenko

Bu kesinlikle karşılaştığım en iyi cevap. Geri kalanlar kıvrımlıydı ama bu basit ve kesindi.
claudekennilol

Bu BİR KEZ çalışır. Hesapları yeniden ekledikten sonra aynı sorun oluşmaya devam eder.
Megakoresh

38

Ayrıca ssh yerine sadece https'ye geçebilirsiniz. Https kullanırsanız, .git / config ayarlarına uyacaktır. Yani, .git / config içinde değiştirin:

url = git@github.com:USER/PROJECT.git

-e

url = https://USER@github.com/USER/PROJECT.git

(bu değerler git proje sayfasındadır, yeni değerleri almak için SSHve HTTPdüğmelerine tıklayın );


2
+1! Bu özel tuşlar vb yüklemek istemiyorum nereye ödünç makineleri vb den kerelik iter yapmak için gerçekten iyi bir çözümdür
lambshaanxy

1
Sanırım kullanmanın tek sorunu, httpspush
a'yı

Bunun çok eski olduğunu biliyorum ama TEŞEKKÜR EDERİM. Makinem ssh için ayarlanmadı, ancak yine de kişisel bir dokunuş için kişisel hesabım yerine iş github hesabıma göndermeye çalışıyordu. Bunu proje dizinimdeki .git / config dosyamda kullandım ve harika çalıştı. Yaşasın! Sizin için oy verin.
Sady

2
siz de yapabileceğinizi git push https://username:pass@github.com/user/repo.gitunutmayın ... passkabuk geçmişinizde sorun yoksa
Plato

En iyi çözüm budur. Teşekkür ederim!
codemicky

33

github sizi git'in herhangi bir ayarıyla değil, gördüğü ssh anahtarıyla tanımlar.

Bu nedenle, kişisel hesabınız olarak push etmeye çalıştığınızda iş hesabınızın ssh anahtarının anahtarlığınızda olmadığından emin olmanız gerekir ve bunun tersi de geçerlidir. Kullanım ssh-add -lanahtarlığınıza içinde hangi tuşları belirlemek ve ssh-add -d keyfileAnahtarlıktan bir anahtar kaldırmak için.

Ayrıca, ~/.ssh/configgithub'a belirli ssh anahtarlarını sunacak şekilde yapılandırıp yapılandırmadığınızı kontrol etmeniz gerekebilir . Son olarak, github'ın aynı ssh ortak anahtarına sahip iki hesapla nasıl başa çıktığını bilmiyorum, bu yüzden bunu yapmadığınızdan emin olun.


3
Ayrıca, gerekirse, GIT_SSHgit'e ssh için farklı bir komut kullanmasını söylemek için ortam değişkenini kullanabilirsiniz; özellikle, belirli bir anahtar kullanmasını sağlayabilirsiniz. Bkz ana git adam sayfasını , ya da belki bu soruyu .
Cascabel

Sistemimde (OSX 10.5), anahtar ssh-add -d keyfile
halkasından

Teşekkürler @Motin, aslında söylemek istediğim buydu. Düzenlendi.
Walter Mundt

12

Son zamanlarda aynı sorunu yaşadım çünkü yeni bir github hesabı oluşturdum. Yukarıdaki cevapları denedim ama yardımcı olmadı. Sonra bir yerlerde github'u Keychain Access'ten silmekle ilgili bir gönderi gördüm (yalnızca mac kullanıyorsanız ). Push'a gittiğimde, kullanıcı adı ve şifre soruyor ve işe yaradı!


@Carpetsmoker Görünüşe göre OP, Mac'e özel bir çözüm sunuyor.
Zev Spitz

1
Lütfen orijinal gönderiyi bulmaya çalışın ve bir bağlantı olarak ekleyin.
Zev Spitz


11

Ben de aynı sorunu yaşadım. Görünüşe göre GitHub'da aynı SSH anahtarını kullanan iki hesabım vardı ve GitHub, peşinde olduğum depoya izin vermeyen yanlış hesabı kullanıyordu. SSH anahtarını tamamen kullanmadığım hesaptan kaldırdım beklendiği gibi çalıştı.

GitHub'ın hangi hesapla kimliğinizi doğruladığını test edebilirsiniz:

ssh -T git@github.com

Benim için, bu başlangıçta yanlış kullanıcı adını gösterdi, ancak bu hesaptan yinelenen SSH anahtarını çıkardıktan sonra, doğru kullanıcı adını gösterdi ve repomu çekme ve itme iyi çalıştı.


8

Bunun biraz geç olabileceğini biliyorum, ancak bir süredir buna bağlı kaldım ve sonunda şu şekilde düzelttim:

örnek ekran görüntüsü

  • Anahtarlık erişimine (osX) gidin

  • git arama (Tüm Öğeleri seçtiğinizden emin olun)

  • Burada suçlu kimlik bilgilerini bulacaksınız. Onları sil.

Bu yardımcı olur umarım!


Bana yardımcı olan tek cevap buydu!
Wilder Pereira

Bu cevap, mac'taki sorunu çözmeme yardımcı oldu.
Javascript Hupp Technologies

6

Bu, bunu yapmanın bir yoludur: Farklı ssh hesapları için farklı ssh yapılandırmaları kullanabilirsiniz.

22 Şubat'ta güncellendi:

Bu bağlantıya göz atın: https://gist.github.com/2351996


Bağlantılı Gist ve Gist sayfasındaki ilk yorum benim için mükemmel bir şekilde çalıştı. Anahtarlığınıza birden fazla anahtar bırakabileceğiniz ve her şey 'sadece işe yaradığı' için bunun Walter Mundt'un cevabından daha üstün olduğunu düşünüyorum.
keybits

3

Hesapla ilişkili SSH anahtarını değiştirmek işe yaramazsa, hesapla ilişkili e-postayı değiştirin.

Github> Hesap Ayarları> E-postalar'a gidin ve işlemek için kullandığınız e-posta adresinin hesaptaki e-posta ile eşleştiğini doğrulayın.

Eğer işlemek için kullanmakta olduğunuz e-posta adresi görmek için aşağıdaki komutu çalıştırın: git config --global user.email. Kaydetmek için kullandığınız e-posta adresini değiştirmeniz gerekirse, çalıştırın git config --global user.email "your_email@youremail.com".


2

Ben de aynı sorunu yaşıyorum. Benim durumumda olanlar aşağıdadır:

Daha önce git'e uzak depoyla her konuştuğumda kimlik bilgimi sormamasını şu şekilde yaptım: git config --global credential.helper wincred

Aynı komutu "wincred" git config --global credential.helper none ile değiştirerek "none" çalıştırarak çözdüm

Sonra git kullanıcı adımı sor / tekrar geç ve her şey yolunda gidiyor


1

Bu sorunu da yaşadım ama diğer çözümlerin hiçbiri benim için işe yaramadı. İş .netrciçin github kimlik doğrulaması için girişler içeren bir dosya oluşturduğumuz ortaya çıktı . gitKomut her zaman kullanılır .netrcbenim eski kullanıcı adı ve şifresini vardı. .netrcYeni kullanıcı adını ve şifreyi kullanmak için dosyamdaki girişleri düzenlemem gerekiyordu .


1

killall ssh-agentKullanmanız gereken hesap için oluşturulan ssh anahtarlarını ilk çalıştırdıktan sonra eklediğiniz geçici bir çözüm buldum ssh-add ~/.ssh/id_4shameer

Bu, tür hatasını aldığımızda çoklu github hesabı üzerinde çalışabilmemizin tek yoludur ERROR: Permission to user/repo-git.git denied to username.


1

İşe gidene kadar git ile hiç sorun yaşamadılar, yakın zamanda macbook'larımızı Active Directory'ye bağladılar ve makineme birkaç yönetici hesabı eklediler. Ancak, bundan sonra ekranımı kilitleyip geri gelene kadar git iyi çalışıyordu. Sonra şuna benzer belirsiz bir hata alırdım

No user exists for uid 1927040837
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Bu makinede kullanıcım için yalnızca bir ssh anahtarım var ve kendi dönemimde zsh kullanıyorum. Kullanıcı e-postası ve adı doğru olduğundan sorun bu değildi. Ergo, makinemi her kilitledikten sonra yeniden başlatmak boşuna. Benim için çözüm, dosyamı düzenlemek .zshrcve ssh anahtarını dışa aktaran satırı (daha önce hiç yapmadığım ve yıllardır zsh kullanmadığım) satırın açıklamasını kaldırmaktı.

Satır şunun gibi görünmelidir:

# ssh
export SSH_KEY_PATH="~/.ssh/<your_rsa_id>"

Bunu yaptıktan sonra sadece bir resetin terminali çalıştırın ve her şey yolunda gidiyor.

Umarım bunun bir başkasına yardımı olur.


0

Eklemek istiyorum - Başka bir kullanıcının hesabı üzerinde çalışıyorsanız, kendinizi depo ayarlarının altındaki ortak çalışanlar alanına eklediğinizden emin olun.


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.