git中的ssh和https方式的使用(gitee为例)

 

 

 

在使用git管理代码,或者使用github,国内的码云(gitee)的时候,有两种方式可使用,分别是https和ssh,如下均使用gitee为例。git

    1. ssh方式

         配置ssh,若是不配置ssh的话,clone项目的时候会报错,缘由是没有配置公钥。github

      1 Permission denied (publickey)
      2 Could not read from remote repository.

                         首先,进入用户目录,查看本地是否已经存在公钥文件。windows

      1 cd ~/.ssh
      2 ls

                        若是显示文件夹不存在,则本地尚未生成密钥文件,则使用git提供的密钥生成工具进行生成。服务器

      1 ssh-keygen -t rsa -C "xxxxx@xxxxx.com"

                       注意,回车后有几回须要回车,第二部须要你设置密码,若是不设置直接回车,则之后在使用ssh方式拉取提交代码的时候不须要再输入密码。ssh

                       完成后,用户文件夹下多出了一个.ssh文件夹,里面有两个文件,一个id_rsa 和id_rsa.pub文件,使用命令打开id_rsa.pub文件,复制内容工具

      1 cat ~/.ssh/id_rsa.pub

            而后粘贴到github或gitee上的公钥中,能够给项目添加公钥,也能够给本身的帐号添加公钥,两者的区别官方的解释是:测试

            项目的 sshkey 只针对项目,且咱们仅对项目提供了部署公钥,即项目下的公钥仅能拉取项目,这一般用于生产服务器拉取仓库的代码。 而用户的 key 则是针对用户的,用户添加了 key 就对用户名下的项目和用户参加了的项目具备权限,通常而言, 用户的key具备推送和拉取的权限,而项目的 key 则只具备拉取权限。spa

                      

                  输入命令进行测试:3d

      1 ssh -T git@gitee.com

                                            若是返回 ”Hi gitee用户名xxxxxx......“ 说明配置成功了。code

                                            设置好了以后,而后拉取代码,第一次拉取的时候,会询问是否信任链接,yes就好了,就能够正常拉取,提交代码了,也不须要设置每次都输入帐号和密码了。

                              注意,信任完gitee的链接后,.ssh文件夹里多出了一个known_hosts文件,这里就记录了gitee的相关链接信息。这里会有一个小问题,那假如我有多个git帐号,好比:1,gitee帐号,用于本身我的 2,gihub帐号,用于公司开发,那么怎么配置多个密钥呢?

                             解决办法:1,生成多个密钥文件

                                        

      1 ssh-keygen -t rsa -C 'xxxxx@company.com' -f ~/.ssh/gitee_id_rsa
      2 ssh-keygen -t rsa -C 'xxxxx@qq.com' -f ~/.ssh/github_id_rsa

                                                2,在 ~/.ssh 目录下新建一个config文件,添加以下内容(其中Host和HostName填写git服务器的域名,IdentityFile指定私钥的路径)

       1 # gitee
       2 Host gitee.com
       3 HostName gitee.com
       4 PreferredAuthentications publickey
       5 IdentityFile ~/.ssh/gitee_id_rsa
       6 # github
       7 Host github.com
       8 HostName github.com
       9 PreferredAuthentications publickey
      10 IdentityFile ~/.ssh/github_id_rsa

                                               3,用ssh命令分别测试

      1 $ ssh -T git@gitee.com
      2 $ ssh -T git@github.com
    2. https方式

      配置credential.helper,首先简单介绍一下credential.helper这个配置项的含义:这个配置项容许用户自行指定git所使用的凭据管理工具。SSH协议并不采用这里讨论的凭证存储。

      首先,检查credential.helper配置,输入命令

      1 git config -l|grep credential.helper

      没有配置的话,显示为空,windows安装若是安装的是GitGUI的时候,默认是勾选manager的,credential.helper=manager,若是没有配置的话,每次拉取,提交都须要密码。使用如下命令配置:

      1 git config credential.helper manager

      再次尝试pull代码的时候会弹出窗口要求输入用户名密码(只须要输入这一次就ok了),之后就不须要再输入密码了,windows而言,这个凭据放在windows的凭据管理器中

                        整个过程能够这样描述:当配置credential.helper后,git在须要用户名密码时会首先向指定的凭据管理器查找凭据,若是凭据不存在(对应第一次pull),则弹窗提示用户输入用户名密码,而后凭据管理器会记录这个凭据;若是凭据存在(对应第二次pull),则直接使用该凭据进行对应的git操做。

                       注意:当你须要在同一台机器上使用多个git帐号这么搞就不行了,由于2个帐号一定使用的不一样的凭据。

相关文章
相关标签/搜索