美文网首页iOS学习Tool机器学习之旅
多个github帐号更新多个hexo博客

多个github帐号更新多个hexo博客

作者: codeTao | 来源:发表于2018-10-01 12:49 被阅读2次

    一台电脑, 多个github帐号的SSH key切换, 更新多个hexo博客

    github账号,工作有一个,自己有一个。但是默认下使用ssh key在git push时只有默认账号能免输入账号和密码。

    • 如果你建立并配置了.ssh/config文件后, 但却不知道怎么使用。这篇文章是为你准备的。

    1. 打开终端,进入ssh根目录下

    cd ~/.ssh/
    

    2.创建新的 私钥/公钥, 并指定秘钥名称, 如 kentsun_rsa

    • 使用一下命令行, 然后两次回车即可.
    ssh-keygen -t rsa -f  ~/.ssh/随便名字_id_rsa -C "yourmail@xxx.com"
    
    • 或者使用下面命令行创建秘钥, 需要三次回车, 但是第一次回车需要输入秘钥名字.
    ssh-keygen -t rsa -C "yourmail@xxx.com"
    
    • 注意:这次创建新的秘钥 ,不要再三次回车了, 要在第一次回车的地方,填入新秘钥名字, 如果不填将使用默认的id_rsa , 会将原来的ssh_key覆盖. 新秘钥名后面建议加_rsa或者id_rsa.
    sshkey2.png

    3.配置config

    如果 ~/.ssh/根路径下, 没有config, 则创建一个config文件

    touch config
    
    • config配置如下, 第一个为原来的ssh key配置, kentsun为新的ssh key配置
    #第一个账号,默认使用的账号
    Host github.com
     HostName github.com
     User git
     IdentityFile ~/.ssh/id_rsa
    # 第二个账号 kentsun
    Host kentsun.github.com # kentsun为前缀名,可以任意设置
     HostName github.com
     User git
     IdentityFile ~/.ssh/kentsun_rsa
    
    • 我们指定 kentsun.github.com 这个"作用域"下的ssh连接统一指向 github.com ,并且使用之前生成好的 github_rsa 这个密钥加密。
    • 默认的使用 ~/.ssh/id_rsa 这个密钥加密

    原理分析:

    • 1.ssh 客户端是通过类似 git@github.com:githubUserName/repName.git 的地址来识别使用本地的哪个私钥的,
      地址中的 User 是@前面的git, Host 是@后面的github.com
    • 2.如果所有账号的 User 和 Host 都为 git 和 github.com,那么就只能使用一个私钥。
      所以要对User 和 Host 进行配置,让每个账号使用自己的 Host,每个 Host 的域名做 CNAME 解析到 github.com,
      如上面配置中的Host kentsun.github.com。
    • 3.配置了别名之后,新的地址就是git@kentsun.github.com:githubUserName/repName.git。
      这样 ssh 在连接时就可以区别不同的账号了。

    4.设置新github账户SSH key

    最终会生成一个文件在用户目录下,打开用户目录,找到.ssh\kentsun_rsa.pub文件,记事本打开并复制里面的内容,打开你的github主页,进入个人设置 -> SSH and GPG keys -> New SSH key:

    github-sshkey.png

    将刚复制的内容粘贴到key那里,title随便填,保存。

    5.在.ssh根目录下, 清空本地的 SSH 缓存,添加新的 SSH 密钥 到 SSH agent中

    cd ~/.ssh
    ssh-add -D
    ssh-add id_rsa
    ssh-add id_rsa_second
    
    • 最后确认一下新秘钥已经添加成功
    ssh-add -l
    

    6.输入指令, 验证配置是否成功

    • 默认ssh_key验证
    ssh -T git@github.com
    
    • 新ssh_key验证, 新秘钥名替换username
    ssh -T git@username.github.com
    
    • 如下提示信息, 则配置成功
    $ ssh -T git@github.com
    Hi username! You've successfully authenticated, but GitHub does not provide shell access.
    

    7.进入各自项目文件夹,单独设置用户名/邮箱

    • 注意:如果有多个账号,建议使用局部的。
    # 取消全局 用户名/邮箱 配置
    git config –global –unset user.name
    git config –global –unset user.email
    
    # 单独设置每个repo 用户名/邮箱
    git config user.name "用户名"  //在config后加上--global即全局
    git config user.email "邮箱"
    
    • 查看设置是否成功
    git config --list
    

    8.最后在 hexo 配置文件修改git地址

    deploy:
      type: git
      repository: git@username.github.com:githubUserName/githubUserName.github.io.git
      branch: master
    
    • repo配置相当于在原来 git仓库地址中添加了Host名字 kentsun, 其他不变.

    可参考我的:

    deploy:
      type: git
      repo: git@kentsun.github.com:KentSun/KentSun.github.io.git
      branch: master
    

    配置多个git账户重复以上步骤。

    修改remote 作用域

    + 最后修改一下我们在 kentsun 克隆下来的项目的 remote “作用域” 。

    $ git remote rm origin
    $ git remote add origin git@kentsun.github.com:kentsun/123.git // 注意是 kentsun.github.com 
    $ git push origin master
    Everything up-to-date 
    

    相关文章

      网友评论

        本文标题:多个github帐号更新多个hexo博客

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