Github birden çok hesap bir bilgisayar her zaman bir hesap görür

Bu muhtemelen bir çift değil; StackOverflow'taki pek çok benzer problemi okudum ama bu sorunu değil.

Ubuntu Linux'ta birden fazla git hesabını kullanmaya çalışıyorum ve ne zaman ikinci hesaptan itmeye çalıştığımı, hala ilk hesabın kullanıcı adını kullandığımı düşünüyor.

$ git push -u origin master
ERROR: Permission to /.git denied to .

Önce birden çok SSH anahtar yöntemini denedim. Yukarıdaki hatayı aldığımda, yerel makinemde tamamen yeni bir kullanıcı oluşturdum, o kullanıcı olarak giriş yaptım, yerel repo'yu (ilk basma) yeniden yarattım ve tekrar denedim. Aynı hata. Yerel .config'im, kullanıcıyı ~/.gitconfig öğesinde olduğu gibi gösterir.

Herhangi bir fikir?

Ben yaparım: ssh @localhost o zaman ssh -vvv -T [email protected]

Bu ilginç çıktıyı alıyorum. Hesabımdan çıkıp bir anahtar buluyor gibi görünüyor. Ama bir şekilde benim hesabımda bir anahtar kullanıyor, ki bu gerçekten erişime sahip olmamalı.


debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /home//.ssh/known_hosts:1
debug2: bits set: 513/1024
debug1: ssh_rsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug3: Wrote 16 bytes for a total of 1015
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug3: Wrote 48 bytes for a total of 1063
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key:  
debug2: key:  
debug2: key: /home//.ssh/identity ((nil))
debug2: key: /home//.ssh/id_rsa ()
debug2: key: /home//.ssh/id_dsa ((nil))
debug3: Wrote 64 bytes for a total of 1127
debug1: Authentications that can continue: publickey
debug3: start over, passed a different list publickey
debug3: preferred gssapi-keyex,gssapi-with-mic,gssapi,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: 
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug3: Wrote 368 bytes for a total of 1495
debug1: Authentications that can continue: publickey
debug1: Offering public key: 
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug3: Wrote 368 bytes for a total of 1863
debug1: Remote: Forced command: gerve 
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug2: input_userauth_pk_ok: fp 
debug3: sign_and_send_pubkey
debug3: Wrote 640 bytes for a total of 2503
debug1: Remote: Forced command: gerve 
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Authentication succeeded (publickey).
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug3: Wrote 128 bytes for a total of 2631
debug2: callback start
...
7
bir şey tekrar VM'de (act1 var olmadığı yerde) yaptı ve işe yaradı ... ama bu kesinlikle ideal değil :-(
katma yazar AndrewStone, kaynak

4 cevap

Bunun nedeni ssh-aracısının ssh anahtarını önbelleğe almasıdır (dosyayı silebilir ve önbellek temizleninceye kadar ssh'nin başarılı bir şekilde bağlanmasına izin verir) ve IdentityFile ile belirtilenler üzerinde önbelleğe alınmış anahtarları önceliklendirir. Hangi dosyaların önbelleğe alındığını görebilirsiniz:

ssh-add -l

Ssh-aracısını, her bağlantı için .ssh/config dosyasında IdentitiesOnly "yes" dahil ederek önbelleği yok saymaya zorlayabilirsiniz:

Host github
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa
  IdentitiesOnly yes

Host github-work
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_dsa_work
  IdentitiesOnly yes

More information here: http://sealedabstract.com/code/github-ssh-with-multiple-identities-the-slightly-more-definitive-guide/

Bunu keşfetmem biraz zaman aldı, umarım birilerine yardım eder.

10
katma
Bu kocaman, büyük bir yardım Phil. Bu derhal problemimi çözdü.
katma yazar AKWF, kaynak

Bu cevaba ilişkin varsayımları belirtmek için, soru başlığından gerçekten yapmak istediğiniz şey farklı GitHub kullanıcıları olarak tanımlanmak üzere GitHub'a zorlamak gibi geliyor.

Bu durumda, sisteminizde farklı GitHub kullanıcıları olarak SSH üzerinden geçmek için birden fazla kullanıcı oluşturmamalısınız. Bunu yapmanın doğru yolu, farklı kimlik dosyaları belirten ~/.ssh/config içinde github.com için iki takma ad oluşturmaktır, burada açıklandığı gibi . Örneğin, ~/.ssh/config kodunuzda şunlar olabilir:

Host github-act1
  HostName github.com
  User git
  IdentityFile /home/whoever/.ssh/id_rsa.act1

Host github-act2
  HostName github.com
  User git
  IdentityFile /home/whoever/.ssh/id_dsa.act2

Ardından deponuza iki tane uzaktan kumanda ekleyebilirsiniz:

git add remote act1 [email protected]:whoever/whatever.git
git add remote act2 [email protected]:whoever/whatever.git

Sonra tek bir kullanıcı olarak zorlamak isterseniz şunları yapabilirsiniz:

git push act1 master

... ya da ikinci hesap olarak:

git push act2 master
3
katma
@AndrewStone: ikinci kullanıcı olarak nasıl oturum açıyorsunuz? İkinci kullanıcı olarak giriş yaptığınızda echo $ HOME size ne gösterir?
katma yazar Mark Longair, kaynak
Bu yöntem benim için harika çalıştı.
katma yazar Nick, kaynak
evet önce bu yöntemi denedim. Aynı hata. Sonra birden fazla unix hesabı yöntemine gittim, bazı ssh yapılandırma problemlerim olduğunu düşünüyorum ...
katma yazar AndrewStone, kaynak
ssh @localhost./Home/ öğesini gösterir. 4 günlük elektrik kesintisi yanıtında gecikme için özür dilerim
katma yazar AndrewStone, kaynak
debug2: key:  
debug2: key:  
debug2: key: /home//.ssh/identity ((nil))
debug2: key: /home//.ssh/id_rsa ()
debug2: key: /home//.ssh/id_dsa ((nil))

Bu çok şüpheli görünüyor. Ev dizininiz neden sadece /home/? Birden fazla kullanıcı aynı ana dizine sahipse, ssh her iki kullanıcı için aynı anahtarı bulursa şaşırmam. Sonuçlarını kontrol edin

echo $HOME

her kullanıcı olarak giriş yaparken. Farklı dizinlere işaret etmelidirler.

0
katma

.Git klasörüne ve içeriğine ilişkin izinlere bakın. ssh github.com -vvvv ile github'a hangi SSH anahtarının iletildiğini onaylayın.

0
katma
Yanlış eviniz olabilir. pwd ~ ne diyor?
katma yazar Adam Dymitruk, kaynak
ssh [email protected] -vvvv "Merhaba " (yanlış hesap) diyor ki neden çıktı görmek için tüm çıktıları kazdım
katma yazar AndrewStone, kaynak
bir nedenden ötürü ssh diğer kullanıcı hareketlerime ulaşıyor ve ona bakıyor. Bu çıktılar: debug2: key: /home//.ssh/id_rsa ve "uzak: zorla komut: gerve "
katma yazar AndrewStone, kaynak