这可能不是重复; 我已经阅读了StackOverflow上的许多类似问题,但没有读过这个问题.
我试图在Ubuntu Linux上使用多个git帐户,每当我尝试从第二个帐户推送时,它认为我仍在使用第一个帐户的用户名.
$ git push -u origin master
ERROR: Permission to <act2>/<repo>.git denied to <act1>.
Run Code Online (Sandbox Code Playgroud)
我首先尝试了多个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
...
Run Code Online (Sandbox Code Playgroud)
Phi*_*use 10
发生这种情况是因为ssh-agent缓存了ssh密钥(您甚至可以删除该文件,它仍然允许ssh成功连接,直到缓存被清除)并且将优先考虑缓存的密钥,甚至优先于通过IdentityFile指定的密钥.您可以通过运行来查看缓存了哪些文件:
ssh-add -l
Run Code Online (Sandbox Code Playgroud)
您可以通过在每个连接的.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
Run Code Online (Sandbox Code Playgroud)
更多信息请访问:http://sealedabstract.com/code/github-ssh-with-multiple-identities-the-slightly-more-definitive-guide/
我花了很长时间才发现这一点,希望它有助于某人.