第一次使用github创建远程仓库,按照github使用指南指导都没问题,就是到了从本地推送到远程到时候,报错了:
可能是我之前就生成过SSH Key的原因(使用的是公司生成的,跟github类似的版本控制管理库),导致github没法识别并连接上。
还有一种可能是,你拿到的电脑是已经被用过的,电脑的SSH公钥已经绑定了别人的GitHub 账号,就不能再用他的公钥了。
具体解决方法:
1. 生成一个新的SSH key:
运行下面的命令创建SSH Key。
$ ssh-keygen -t rsa -C "[email protected]"
Generating public/private rsa key pair.
Enter file in which to save the key
(/Users/your_user_directory/.ssh/id_rsa): 按回车键
Enter passphrase (empty for no passphrase): 输入密码
Enter same passphrase again: 再次输入密码
“[email protected]”的部分请改成您在创建账户时用的邮
箱地址。密码需要在认证时输入,请选择复杂度高并且容易记忆的组合。
输入密码后会出现以下结果。
Your identification has been saved in /Users/your_user_directory/.ssh/id_rsa.
Your public key has been saved in /Users/your_user_directory/.ssh/id_rsa.pub.
The key fingerprint is:
fingerprint值 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
| .+ + |
| = o O . |
(注意我原来就已经有id_rsa了,现在重新创建一个自己的key,命名为id_rsa_personal_ziqi)
创建完之后,多了id_rsa_personal_ziqi 和id_rsa_personal_ziqi.pub
2、打开新生成的~/.ssh/id_rsa_personal_ziqi.pub文件,将里面的内容添加到GitHub后台:
(用cat命令或者vim查看内容)
打开github,右上角setting,
3.打开(或者新建)~/.ssh/config文件.
没有config文件则创建,终端输入touch config ,创建完以后用Vim打开或者是在Finder打开一样。在不影响默认的github设置下我们重新添加一个Host:
建一个自己能辨识的github别名,我取的是github-personal,新建的帐号使用这个别名做克隆和更新
#Default GitHub
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
Host github-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_personal_ziqi
编辑完毕之后按下ESC,:wq,:wq是保存并退出vim编辑器
具体在终端代码如下:
cat config 是把config文件里面的内容在终端输出
4、将GitHub SSH仓库地址中的[email protected]替换成新建的Host别名。
如原地址是[email protected]:ziqiiii/Python_learning.git替换后应该是:github-personal:ziqiiii/Python_learning.git,
如果是新建的仓库,直接使用替换后的URL克隆即可。如果已经使用原地址克隆过了,可以使用命令修改:
修改之前:
修改之后:
最后我们进行正常的push操作,就可以啦~
完成以上设置后,就可以用手中的私人密钥与GitHub 进行认证和通信了。让我们来实际试一试
命令行输入:ssh -T github-personal
(正常情况下是输入:
ssh -T [email protected]
因为我们改了host name为 github-personal嘛,所以会不一样)
看到这句就是设置成功啦:
Hi ziqiii! You've successfully authenticated, but GitHub does not
provide shell access.
参考自:
1. Git 最著名报错 “ERROR: Permission to XXX.git denied to user”终极解决方案