美文网首页
windows启动git bash时自动启动ssh agent

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

作者: zwebbin | 来源:发表于2018-09-16 15:20 被阅读0次

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

    在打开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 git@github.com
    

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

    相关文章

      网友评论

          本文标题:windows启动git bash时自动启动ssh agent

          本文链接:https://www.haomeiwen.com/subject/fpixnftx.html