今天在使用git克隆项目时,发觉报如下错误,提示我没有权限,但是我克隆的是网上的开源项目,怎么还会需要权限呢。经过多次检查,确认电脑可以上网,在网上搜了很多资料之后,才发现是秘钥配置有问题。记录一下一遍查阅。 Warning: Permanently added the RSA host key for IP address ‘13.250.177.223’ to the list of known hosts. Permission denied (publickey). fatal: Could not read from remote repository.
ssh-agent命令是一种控制用来保存公钥身份验证所使用的私钥的程序。ssh-agent在X会话或登录会话之初启动,所有其他窗口或程序则以客户端程序的身份启动并加入到ssh-agent程序中。通过使用环境变量,可定位代理并在登录到其他使用ssh机器上时使用代理自动进行身份验证。
其实ssh-agent就是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程。
语法 ssh-agent [-c | -s] [-d] [-a bind_address] [-t life] [command [arg …]] ssh-agent [-c | -s] -k 选项 -a bind_address:bind the agent to the UNIX-domain socket bind_address. -c:生成C-shell风格的命令输出。 -d:调试模式。 -k:把ssh-agent进程杀掉。 -s:生成Bourne shell 风格的命令输出。 -t life:设置默认值添加到代理人的身份最大寿命。 实例 运行ssh-agent:
ssh-agent 运行ssh-agent,它会打印出来它使用的环境和变量。
设置用户名和邮箱 在git命令行中对git进行全局设置, git config –global user.name “用户名”, git config –global user.email “邮箱地址”; 3 生成SSH key 在git命令行中,输入命令: cd ~/.ssh,来检测是否生成过key,没有生成过key,会有相关信息提示;然后输入命令: ssh-keygen -t rsa -C “邮箱地址”,按下回车键;然后根据返回的信息,找到.ssh目录下的两个文件; 在github上添加SSH key 在github上点击“setting”,找到添加SSH key的菜单,然后新增SSH key;把文件id_rsa.pub 里面的内容全部复制到 key编辑框中,保存完毕; 检查SSH key是否有效 在git命令行输入:ssh -T git@github.com;这里会要求你输入SSH key密码,如果刚才生成SSH key时未输入密码,密码就为空;然后看到信息: ERROR: Hi 用户名! You’ve successfully authenticated;说明配置成功; 再次查看github密钥 登陆到github上查看刚刚输入的SSH key,现在图标的颜色变为绿色,说明密钥配置有效;现在可以在git命令行上进行git操作了;
之前由于秘钥添加一直都是以失败告终,总是提示我没有权限,以为是使用一个邮箱注册了GitHub、gitlab和码云的原因,今天才发现,其实不管是哪个代码托管网站,只有注册的邮箱相同,那么每个代码托管网站都可以使用这一个邮箱生成的SSH秘钥。
参考文章: https://jingyan.baidu.com/article/dca1fa6f756777f1a44052e3.html http://man.linuxde.net/ssh-agent