Github多个帐户一台计算机总是看到一个帐户

时间:2011-10-28 03:49:00

标签: git github

这可能不是重复;我已经阅读了StackOverflow上的许多类似问题,但没有读过这个问题。

我正在尝试在Ubuntu Linux上使用多个git帐户,每当我尝试从第二个帐户推送时,它认为我仍在使用第一个帐户的用户名。

$ git push -u origin master
ERROR: Permission to <act2>/<repo>.git denied to <act1>.

我首先尝试了多种SSH密钥方法。当我收到上述错误后,我在本地计算机上创建了一个全新的用户,以该用户身份登录,重新创建了本地仓库(它是第一次推送)并再次尝试。同样的错误。我的本地.config显示用户,我的〜/ .gitconfig也是如此。

有什么想法吗?

我这样做: ssh @localhost 然后是ssh -vvv -T git@github.com

我得到了这个有趣的输出。它似乎在我的帐户中找到了一个密钥。但不知何故,它在我的帐户中使用了一个密钥,实际上应该无法访问。


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 no-more-sessions@openssh.com
debug1: Entering interactive session.
debug3: Wrote 128 bytes for a total of 2631
debug2: callback start
...

4 个答案:

答案 0 :(得分:10)

这是因为ssh-agent缓存了ssh密钥(你甚至可以删除文件,它仍然允许ssh成功连接,直到缓存被清除),并且优先考虑缓存的密钥,甚至优先于通过IdentityFile指定的密钥。您可以通过运行来查看缓存了哪些文件:

ssh-add -l

您可以通过在每个连接的.ssh / config中包含IdentitiesOnly“yes”来强制ssh-agent忽略缓存:

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

此处提供更多信息:http://sealedabstract.com/code/github-ssh-with-multiple-identities-the-slightly-more-definitive-guide/

我也花了很长时间才发现这一点,希望它有所帮助。

答案 1 :(得分:3)

为了说明我对这个答案的假设,它从问题标题中听起来好像你真正想做的是能够推送到GitHub被识别为不同的GitHub用户。

如果是这种情况,您不应该在系统上创建多个用户,只是为了通过SSH推送不同的GitHub用户。正确的方法是在github.com中为~/.ssh/config设置两个指定不同身份文件as described here的别名。例如,您的~/.ssh/config可能包含以下内容:

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

然后,您可以将两个遥控器添加到您的存储库:

git add remote act1 git@github-act1:whoever/whatever.git
git add remote act2 git@github-act1:whoever/whatever.git

然后,如果您想作为一个用户推送,您可以这样做:

git push act1 master

......或作为第二个帐户:

git push act2 master

答案 2 :(得分:0)

查看.git文件夹及其内容的权限。使用ssh github.com -vvvv确认将哪个SSH密钥传递给github。

答案 3 :(得分:0)

debug2: key:  
debug2: key:  
debug2: key: /home//.ssh/identity ((nil))
debug2: key: /home//.ssh/id_rsa ()
debug2: key: /home//.ssh/id_dsa ((nil))

看起来非常可疑。为什么您的主目录只是/home/?如果多个用户拥有相同的主目录,那么我并不感到惊讶,ssh为两个用户找到了相同的密钥。检查

的结果
echo $HOME

以每个用户身份登录。他们应该指向不同的目录。