git配置ssh密钥管理项目

git配置密钥管理项目

这里分三中方式管理git项目,第一种,sourcetree,这也是我一直使用的方式,第二种是git命令行的方式,第三种,就是idea的方式,这里最后会介绍

1 单账号情况(默认密钥文件名)

1.1 生成密钥

在当前用户的目录下有一个.ssh的目录,在这里git bash here
$ cd ~/.ssh/
$ pwd
/c/Users/jiahao/.ssh
在当前目录下生成密钥

ssh-keygen -t rsa -C “jiahao@mail.com”

$ ssh-keygen -t rsa -C "jiahao@mail.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/jiahao/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/jiahao/.ssh/id_rsa.
Your public key has been saved in /c/Users/jiahao/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:mC6k7TTO9ARTJNGmb5uvW2nkx4exZxFWPtGum2fgzZ8 jiahao@mail.com
The key's randomart image is:
+---[RSA 2048]----+
|    oo.       o. |
|     oo      o ..|
|     o.     o o. |
|    .. o   . . ..|
|    +.o S . .  . |
|   + +oo o + .o  |
|  . *.oo= = +. * |
|   * =oo . +  + *|
|    + ++.      Eo|
+----[SHA256]-----+

这里先不指定文件名,生成默认的文件名

在这里插入图片描述

登录上你的客户端,这里是gitlab,其他类似,添加密钥

在这里插入图片描述

打开本地的git bash,测试连接,发现连接成功,这时候就可以进行项目管理了

ssh -T git@gitlab.com

$ ssh -T git@gitlab.com
Welcome to GitLab, @xinyi.jh!

这种单账号,且密钥文件名是默认情况下,idea,sourcetree和命令行都可以进行项目管理

2 单账号(自定义密钥文件名)

添加ssh密钥和上面的步骤一样,只是在生成密钥文件的时候指定文件名。

ssh-keygen -t rsa -C “jiahao@mail.com” -f gitlab_ras

$ ssh-keygen -t rsa -C "jiahao@mail.com" -f gitlab_ras
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in gitlab_ras.
Your public key has been saved in gitlab_ras.pub.
The key fingerprint is:
SHA256:Jsc+2AZSd3hm8B3tGGhfKL2vXO+n55rWNw1M97DfzmM jiahao@mail.com
The key's randomart image is:
+---[RSA 2048]----+
|        .  o.o   |
|         ++.+.o  |
|      . o.*o.*   |
|     . o =  + + .|
|    . o S    + +.|
|     . O      * .|
|      . =  . o =o|
|       . .  o .EX|
|             .=BX|
+----[SHA256]-----+

在这里插入图片描述

可以看到生成了指定的密钥文件名,下一步将公钥配置到gitlab中

至此,sourcetree可以正常使用
但是命令行是没法使用的

$ ssh -T git@gitlab.com
git@gitlab.com: Permission denied (publickey).

这是因为没有本机只是配置了密钥,但git并没有把私钥进行管理,上面的没有指定文件名的默认密钥文件可以加载是因为,git会在当前用户的.ssh文件路劲下加载默认的密钥文件 id_rsaid_rsa.pub

加载密钥文件到ssh-agent

可以使用 ssh-add [密钥文件名]


$ ssh-add ~/.ssh/gitlab_ras
Identity added: /c/Users/jiahao/.ssh/gitlab_ras (jiahao@mail.com)

$ ssh -T git@gitlab.com
Welcome to GitLab, @xinyi.jh!

到这里就可以看到命令行可以管理项目了

但是ssh-add命令不是永久记住私钥的,只是将私钥加载进ssh-agent管理的sessiion中,关闭当前bash后就会失效,总不能每次都ssh-add吧,这是其一,其二,在idea中也是连接不上gitlab的

git@gitlab.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

所以就需要一个非临时性的地方管理密钥,在mac中有钥匙串可以管理密钥,但是windows中目前还没有找到。
所以需要一个配置文件来告诉ssh,去哪里找我们配置好的密钥文件

配置文件config

还是在.ssh文件目录下新建一个config文件

Host gitlab.com
    HostName gitlab.com
    User jiahao@mail.com
    PreferredAuthentications publickey
    IdentityFile /c/Users/jiahao/.ssh/gitlab_ras

这里指定的hostname是你要访问的地址,IdentityFile就是你要指定的密钥文件

配置好后再次验证,成功连接到gitlab

$ ssh -T git@gitlab.com
Welcome to GitLab, @xinyi.jh!

idea验证也ok
在这里插入图片描述
sourcetree不用说,已经优化很好了,自然是可以的

3 多账号

多账号情况下用的就是上面刚讲的那种方法
创建多个密钥,然后在config文件中给不同的账号(gitlab。github等)指定不同的密钥

4 这里说说sourcetree和idea中关于git和密钥的管理配置

sourcetree和idea中关于git的配置很多,这里就不介绍了,主要说说密钥的管理
sourcetree中有两个地方可以管理添加密钥,即使不配置config也是可以找到密钥的

1,直接添加密钥
在这里插入图片描述
2,ssh客户端配置密钥
在这里插入图片描述

至于idea中密钥的管理,貌似之前版本是可以的,网上搜到过git中配置密钥,我更新了最新的2020.3版本,只有配置git的配置,没有找到配置密钥的地方,所以除了上面第一种情况外,必须使用.ssh文件夹config文件才能找到密钥管理项目。

如果大家找到相关的配置或其他的思路,欢迎留言,多多交流!

以下是网上的相关文章
https://segmentfault.com/q/1010000000835302
https://blog.csdn.net/thewindkee/article/details/88552357
https://blog.csdn.net/argleary/article/details/100638560

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值