#背景
从git上通过idea工具clone了一个项目,但是在提交代码的时候发现提示错误,错误代码大致如下
git@github.com: Permission denied (publickey)
找了下原因发现是没有公钥导致的,之前安装git并clone下代码之后没有进行提交,觉得没问题了,发现还是省不得操作啊。
#解决方法
通过生成一个公钥配置到git账号里面的ssh那个菜单就ok了
#具体步骤
1.通过ssh -T git@github.com进行测试查看有没有公钥,如果没提示就会出现和我一样的情况
2.通过命令直接生成公钥
ssh-keygen -t rsa -b 2048 -C “youreamil@email.com”
3.执行完之后会出,此步是让你输入自定义的文件名,这里不用管他,默认就好,直接回车进行下一步骤
Generating public/private rsa key pair.
Enter file in which to save the key (/home/xxx/.ssh/id_rsa):
4.然后会出现如下提示,这步是让你输入一个密码,密码会在提交代码使用(这里除了下面一步,我提交代码时没使用这个密码),不想设置就直接回车(这步我没有尝试),如果不能默认
那就输入一个然后记住吧。与git密码相同好记忆
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
5.然后就创建成功了你会看到提示,还有其他一些输出,这里就不写了
Your identification has been saved in /home/xxx/.ssh/id_rsa.
Your public key has been saved in /home/xxx/.ssh/id_rsa.pub.
6.在成功后把秘钥交给ssh-agent管理
ssh-agent是一种控制用来保存公钥身份验证所使用的私钥的程序。
ssh-agent是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程。
先确认ssh-agent处于启用状态:
eval “$(ssh-agent -s)”
输出类似于:
Agent pid xxxxx
然后将SSH key添加到ssh-agent:
ssh-add ~/.ssh/id_rsa
这时又会要你输入上面定义的密码:
Enter passphrase for /home/xxx/.ssh/id_rsa:
输入,回车
7.打开秘钥所在文件/.ssh,找到默认文件id_rsa.pub
open ~/.ssh
8.把文件内容复制,并添加到你邮件注册的git中,具体路径 git登陆->settings->ssh and GPG keys->new ssh key -> title 随便输入,自己认识就好,key 填写之前生成的公钥->保存
9.完毕
#碰到的问题以及解决方法
1.mac中直接访达当爱你用户文件找不到/.ssh,通过命令行打开的
2.提交代码出现提示,找了下是host没有地址xxx所致,加进去就好了(这个错误在我这里偶尔出现)
Warning: Permanently added the RSA host key for IP address 'xxxxxxxx' to the list of known hosts.
解决:
vim /etc/hosts
添加一行:xxx.xxx.xxx.xxx github.com