git本机配置多个SSH验证

git向平台提交代码时的验证

  1. 必要性:如果不存在验证,那么仓库主的代码可以被所有人修改和提交,这对代码是种极大的不安全
  2. 验证方式: ssh公钥私钥验证,https验证

https的验证方式

  • 首次向该平台提交代码时,需要输入一次用户名和密码,输入过后本机对应这个平台的https的验证方式会存在一条记录(windows凭据)

  • 这种windows凭据记录的信息为

    • 平台的地址(https)
    • 本机使用的对应该平台的用户名
    • 对应上面两个字段的密码

  • 可能有一种情况:

    自己在这个平台有多个账户,在一个账户里有一个私有仓库,我想使用https链接克隆下来,结果windows凭据里的是另一个账户的对应的凭据,这时就会出现 “You do not have permission to pull from the repository via HTTPS”,这时我们应该知道从哪里去解决这个问题了

ssh的验证方式

本地生成ssh公钥密钥

1
2
cd ~/.ssh
ssh-keygen -t rsa -C "*@*.com" #填上注册时的邮箱

平台添加公钥

注:ssh验证方式只对ssh提供的链接有效,https并不需要,本地的私钥和平台上的私钥只要对应就可以得到验证通过

多个ssh公私钥对的配置

对应不同的平台使用不同的密钥对,这样的话可以在.ssh的目录里创建个名为config的文件(就不会冲突了)

注意:多个ssh的创建创建时要填上不同的保存位置(一般在同一个目录,但文件名不同),不然的话互相覆盖,最后只得到一对密钥,具体做法就是在ssh-keygen -t rsa -C “@.com”之后第一次不要回车,填写位置,然后下两次直接回车。

#config示例

注意:多个平台可能有多个用户名,可能每个仓库对应的平台不一样,进而对应的仓库名和邮箱不一样,所以这里还会出现一个问题,就是提交时,可能会出现提交者的名字错乱的问题(一个平台的代码提交者是另一个平台的用户名)一个好的解决办法是:

  1. 先去除全局的user.name 和 user.email,不用统一的了(本机只去除一次,全局生效)

    1
    2
    git config --global --unset user.name
    git config --global --unset user.email
  2. 每次commit时若没有name和email就没法创建历史,就会给出错误提示,这时我们用如下方式创建对应该仓库的用户名和邮箱,每个仓库只需要设置一次就好。

    1
    2
    git config user.name "用户名"
    git config user.email "邮箱"

git本机配置多个SSH验证
https://blog.wangxk.cc/2020/01/02/git本机配置多个SSH验证/
作者
Mike
发布于
2020年1月2日
许可协议