Win7 Git bash 出现Permission denied (publickey)错误

Windows用户的多数程序员喜欢安装Git bash,用命令行控制。最近发现如果要操作多个git repos,需要生成多个MD5密钥。在执行git操作时需要指定使用哪个密码,通过以下设置可以实现。

Check that you are connecting to the correct server

使用下面的命令检查是否连接到正确的domain:

$ ssh -vT ssh -vT git@github.com
OpenSSH_7.1p2, OpenSSL 1.0.2h  3 May 2016
debug1: Reading configuration data /c/Users/Amy Zhao/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to github.com [192.30.253.112] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/Amy Zhao/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
...

Always use the “git” user

All connections must be made as the “git” user. If you try to connect with your GitHub username, it will fail:

$ ssh -T billy.anyteen@github.com
Permission denied (publickey)

Instead, you should verify your connection by typing:

$ ssh -T git@github.com
Hi your_username! You've successfully authenticated, but GitHub does not provide shell access.

Make sure you have a key that is being used

First, you should turn on ssh-agent:

# start the ssh-agent in the background
$ eval "$(ssh-agent -s)"
Agent pid 15192

Verify that you have a private key generated and loaded into SSH. If you’re using OpenSSH 6.7 or older, typing:

$ ssh-add -l
2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)

Or if you’re using OpenSSH 6.8 or newer:

$ ssh-add -l -E md5
2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)

The ssh-add command should print out a long string of numbers and letters. If it doesn’t print anything, you’ll need to [generate a new SSH key][generate SSH keys] and associate it the GitHub.

Tip: On most systems the default private keys (~/.ssh/id_rsa, ~/.ssh/id_dsa and ~/.ssh/identity) are automatically added to the SSH authentication agent. You shouldn’t need to run ssh-add path/to/key unless you override the file name when you generate a key.

Auto-launching ssh-agent on Git for Windows

If you want to auto-start ssh-agent and add the private key you wanted, you can config your ~/.bashrc file like below:

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add ~/.ssh/github-amy
    ssh-add ~/.ssh/github_rsa
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add ~/.ssh/github-amy
    ssh-add ~/.ssh/github_rsa
fi

unset env

Tip: If your private keys are not stored in ~/.ssh/id_rsa or ~/.ssh/id_dsa, you must add their paths with the ssh-add command so that your SSH authentication agent knows where to find them. For example: ssh-add ~/.my_other_ssh/id_rsa

Now, when you first run Git Bash, your ssh-agent and identities was started automatically.
The ssh-agent process will continue to run until you log out, shut down your computer or kill the process.

If you want ssh-agent to forget your key after some time, you can configure it to do so by running ssh-add -t <seconds>.

参考

GitHub Help

Working with SSH key passphrases
Error: Permission denied (publickey)
Amy’s Blog

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值