windows启动git bash时自动启动ssh agent

针对问题:
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 [email protected]
[email protected]: 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,然后查到了下面的内容:

在打开git bash的时候自动启动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 [email protected]

如果提示授权成功,则表示ssh key已经全局添加成功了。

你可能感兴趣的:(windows启动git bash时自动启动ssh agent)