针对问题:
Could not open a connection to your authentication agent.
Permission denied (publickey).
从github上clone代码的时候,推荐使用ssh连接,那么就要在自己的电脑上配置好ssh的公钥。
官方的文档在这里
https://help.github.com/articles/connecting-to-github-with-ssh/
由于我自己的电脑已经生成过其它网站的ssh key,所以默认的文件名id_rsa被占用了,
所以需要手动指定公钥文件的地址,加到ssh key的列表中去
ssh-add -l
可以查看当前添加的ssh key和文件路径,默认是保存在~./ssh 文件夹下面
但是在windows上运行这行命令的时候报错了
$ ssh-add
Could not open a connection to your authentication agent.
然后试了一下连接github
$ ssh -T git@github.com
git@github.com: Permission denied (publickey).
在官网上看了一下,其实就是ssh的公钥没加进去导致的。
然后就有了下面的操作
把生成的ssh key添加到ssh agent中
点击查看如何将key add to ssh agent agent
$ eval $(ssh-agent -s)
Agent pid 59566
$ ssh-add path/to/your/file
然后,在这个目录下就可以成功使用这个key与github连接了。
但是,
有个比较奇葩的问题,换了个目录,就会授权失败,我不知道大家有没有这个问题,反正在我的windows 10上出现了,但是mac却不会,我观察了一下,大概是因为mac打开terminal的时候自动会启动ssh agent,就是类似是全局的,在windows上的agent作用的范围只在当前的路径下,因为它是在当前的路径下启动的,所以我又在Google上找了一下如何自动启动ssh agent,然后查到了下面的内容:
在C:/Users/userName/ 目录下,新建一个.profile文件,粘贴以下内容:
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
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
ssh-add
fi
unset env
然后重启git bash,一打开就提示
Identity added: ......
手动将key文件添加到ssh agent
ssh-add path/to/file
换个路径,检测能否连接github.com
ssh -vT git@github.com
如果提示授权成功,则表示ssh key已经全局添加成功了。
网友评论