一台电脑部署两个或多个 Hexo 博客(一台电脑使用两个或多个 GitHub 账号)

由于个人原因需要在一台电脑上部署两个Hexo博客,本来以为挺简单,没想到问题重重,首先是一个GitHub账号只能搭建一个Hexo博客,因此就需要使用其他GitHub账号;其次是一台电脑绑定两个GitHub账号,则需要两对公钥,在处理第二个问题时遇到的问题比较多,因为对这方面一窍不通,还是小白,所以折腾了一下午才解决,网上好多教程我都看不懂,觉得不(自)够(己)详(太)细(笨),因此详细记录一下

原理分析:

  • SSH的公钥是GitHub作为本地仓库和远程仓库连接的唯一标识,一个公钥只能对应一个GitHub账户,如果将一个相同的公钥上传到不同的GitHub账户,GitHub则无法做出辨识,进而导致错误
  • 一台电脑,可以生成多对公私钥,可以通过配置,将不同的公钥上传到不同的GitHub账号,那么就不存在单个公钥绑定多个GitHub账号的情况存在了

相关问题报错:

  • 同一台电脑部署第二个Hexo博客执行hexo g -d时报错:ERROR: Permission to xxxxxx/xxxxxx.github.io.git denied to xxxxxx.
  • 添加新的 SSH 密钥 到 SSH agent 执行ssh-add xxx时报错:Could not open a connection to your authentication agent.
  • 单独设置用户名/邮箱时报错:fatal: not in a git directory

以下是详细过程:
前提:假设你的第二个博客相关配置操作已经顺利完成,但使用hexo g -d命令部署到 GitHub 上时报错:ERROR: Permission to xxxxxx/xxxxxx.github.io.git denied to xxxxxx.

- 查看当前密钥

首先我们打开终端输入ls ~/.ssh/可以查看当前已有的密钥,显示id_rsaid_rsa_pub说明已经有一对密钥

- 创建新的密钥

首先使用以下命令进入 SSH根目录下:

cd ~/.ssh/

方法一

直接使用以下命令创建新密钥,然后两次回车即可:

ssh-keygen -t rsa -f  ~/.ssh/这里是新密钥名称 -C "这里是你的邮箱"

注意区别新密钥名称和旧密钥名称,不要相同!!!

方法二

使用下面命令行创建新密钥:

ssh-keygen -t rsa -C "这里是你的邮箱"

回车后会出现:

 Generating public/private rsa key pair.  Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): 

注意此时需要你输入新密钥的名称,同样要注意区别新密钥名称和旧密钥名称,不要相同!!!之后再两次回车,新密钥创建完毕!

- 配置config

查看你的.ssh/根路径下, 有没有config文件,( 比如我的路径为C:\Users\Lenovo.ssh)没有则使用以下命令创建一个config文件:

touch config

用记事本或者其他工具打开config文件(注意config文件是没有任何后缀名的),写入以下配置:

#第一个账号,默认使用的账号,不用做任何更改
Host github.comHostName github.comUser gitIdentityFile ~/.ssh/id_rsa#第二个新账号,#"xxxxxx"为前缀名,可以任意设置,要记住,后面需要用到
Host xxxxxx.github.comHostName github.comUser gitIdentityFile ~/.ssh/这里是你创建的新密钥的名称

- 设置新GitHub账户SSH key

输入以下命令复制你创建的公钥:

clip < ~/.ssh/这里是你创建的新密钥的名称.pub

也可以直接在.ssh目录下找到你创建的新的公钥,文件名为新密钥的名称.pub,(比如我的是trhx_rsa.pub),用记事本打开,复制里面的内容,然后打开你的新GitHub账号主页,依次进入Settings —> SSH and GPG keys —> New SSH key,将刚复制的内容粘贴到Key那里,Title可以随便填,点击Add Key保存。

- 清空本地的 SSH 缓存,添加新的 SSH 密钥 到 SSH agent中

使用命令cd ~/.sshcd到.ssh根目录下,依次执行以下命令:

ssh-add -D
ssh-add xxxxxx #旧密钥名称,一般是id_rsa
ssh-add xxxxxx #新创建的密钥名称

如果执行以上命令出现错误:Could not open a connection to your authentication agent.,那么就需要先执行ssh-agent bash,再执行以上命令

- 验证配置是否成功

依次执行以下命令,第一个为默认ssh_key验证;第二个为新的ssh_key验证,其中“xxxxxx”为你先前在config文件中的命名

ssh -T git@github.com
ssh -T git@xxxxxxx.github.com

依次显示以下信息, 则说明配置成功:

Hi 你的用户名! You've successfully authenticated, but GitHub does not provide shell access.

- 取消全局用户名/邮箱配置,单独设置用户名/邮箱

执行如下命令,取消全局用户名和邮箱配置(如果已经设置了全局的话):

git config --global --unset user.name
git config --global --unset user.email

分别进入你的两个Hexo博客.git目录下执行以下命令单独设置用户名/邮箱:

git config user.name "这里是用户名"
git config user.email "这里是你的邮箱"

如果此时报错:fatal: not in a git directory,说明你没有进入.git目录下,具体路径:\Hexo\.deploy_git\.git,.git目录是隐藏的,需要你设置隐藏目录可见

执行以下命令可以查看设置是否成功

git config --list

- hexo 配置文件修改git地址

打开你的第二个博客Hexo目录下的_config.yml文件,找到deploy关键字,写入以下配置并保存:

deploy:type: gitrepository: git@xxxxxx.github.com:你的用户名/你的用户名.github.io.gitbranch: master

比如我的配置:

deploy:type: gitrepository: git@love109.github.com:love109/love109.github.io.gitbranch: master

大功告成,再次执行hexo g -d就能成功将新的博客部署到 Github 上了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438028.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解ASP.NET页面生命周期事件

下面是ASP.NET页面初始的过程: 1. Page_Init(); 2. Load ViewState; 3. Load Postback data; 4. Page_Load(); 5. Handle control events; 6. Page_PreRender(); 7. Page_Render(); 8. Unload event; 9. Dispose method called; 下面对其中的一些过程作下描述&#xff1a;1. P…

C语言实现DES加解密算法

C语言实现DES加解密算法DES加解密DES加解密 #include <stdio.h> #include <stdlib.h> #include <string.h> /*--------------------------------------------------------------------------------------------------------------*/ typedef unsigned char …

33种编程语言为您送上祝福,新年快乐!

又是新的一年&#xff0c;没什么好说的&#xff0c;就用33种编程语言为大家送上祝福吧&#xff01;Cprintf("2019&#xff0c;祝大家");Ccout<<"一帆风顺";C#System.Console.WriteLine("二龙腾飞")VBMsg("三羊开泰")VCMessageBo…

IsPostBack须要注意的地方,这些都不是POSTBACK动作

page.IsPostBack属性 简要概述: IsPostBack 字面意思理解为:是回滚,那如果不是回滚,那就是首次加载! (!page.ispostback)理解为:不是回滚,值为:true. if(!page.ispostback) //首次加载 { //如果是第一次加载,就执行此内容. } else{非首次加载页面} 1 IsPostBack介…

C语言实现RC4加解密算法

C语言实现RC4加解密算法RC4加解密RC4加解密 #include<stdio.h>/* RC4初始化函数 */ void rc4_init(unsigned char* s, unsigned char* key, unsigned long Len_k) {int i 0, j 0;char k[256] { 0 };unsigned char tmp 0;for (i 0; i < 256; i) {s[i] i;k[i] k…

element.style内联样式修改

最近在修改我个人博客的一个样式时发现&#xff0c;无论我如何修改style里面的值&#xff0c;页面上的样式都不会被修改&#xff0c;F12检查一下发现个element.style&#xff0c;但是却找不到这个值在哪里&#xff0c;查资料后才知道element.style为内联样式&#xff0c;基本很…

if(!ispostback)其用法和作用 什么时候该用?

&#xff08;1&#xff09;if (!IsPostBack) 里面的代码只执行一遍&#xff0c;即页面第一次加载时。 &#xff08;2&#xff09;以后页面重新刷新时&#xff0c;if (!IsPostBack)里面的语句不执行。 &#xff08;3&#xff09;首次建立页面 IsPostBack为false&#xff0c;用来…

C语言实现SM4加解密算法

C语言实现SM4加解密算法SM4加解密SM4加解密 #include <string.h> #include <stdio.h> #include <time.h> /*--------------------------------------------------------------------------------------------------------------*/ #define SM4_ENCRYPT …

免费CDN:jsDelivr+Github 使用方法

CDN的全称是Content Delivery Network&#xff0c;即内容分发网络。CDN是构建在网络之上的内容分发网络&#xff0c;依靠部署在各地的边缘服务器&#xff0c;通过中心平台的负载均衡、内容分发、调度等功能模块&#xff0c;使用户就近获取所需内容&#xff0c;降低网络拥塞&…

EasyUI学习总结(一)——EasyUI入门

一、EasyUI下载 EasyUI官方下载地址&#xff1a;http://www.jeasyui.com/download/index.php&#xff0c;目前最新的版本是&#xff1a;jQuery EasyUI 1.4.1 下载完成之后&#xff0c;得到压缩包&#xff0c;解压后&#xff0c;得到一个【jquery-easyui-1.4.1】文件夹&#xff…

PWN-PRACTICE-CTFSHOW-1

PWN-PRACTICE-CTFSHOW-1PWN签到题pwn02pwn03pwn04PWN签到题 nc连上去就会打印flag pwn02 栈溢出&#xff0c;覆盖返回地址为后门函数stack起始地址即可 # -*- coding:utf-8 -*- from pwn import * #ioprocess("./pwn1") ioremote("pwn.challenge.ctf.show&…

利用QQ邮箱设置个性域名邮箱,并在网易邮箱大师客户端添加域名邮箱

平常我们使用的邮箱都是xxxqq.com、xxx126.com、xxx163.com、xxxgmail.com之类的&#xff0c;这些邮箱会暴露你的QQ号、电话号等信息&#xff0c;最重要的是后缀都和别人一样&#xff0c;没有个性&#xff0c;也许你看见过xxxliruihao.com、xxxwangxiaoxiao.com之类的带有个性后…

MVC和WebForm区别

WebForm的理解 1、 WebForm概念 ASP.NETWebform提供了一个类似于Winform的事件响应GUI模型&#xff08;event-drivenGUI&#xff09;&#xff0c;隐藏了HTTP、HTML、JavaScript等细节&#xff0c;将用户界面构建成一个服务器端的树结构控件&#xff08;Control&#xff09;&a…

PWN-PRACTICE-CTFSHOW-2

PWN-PRACTICE-CTFSHOW-2pwn05pwn06pwn0701栈溢出之ret2textpwn05 栈溢出&#xff0c;覆盖返回地址为后门函数getFlag起始地址即可 # -*- coding:utf-8 -*- from pwn import * context.log_level"debug" #ioprocess("./pwn1") ioremote("pwn.challen…

VMware Pro 15 安装 Deepin15.9 国产操作系统详细教程

Deepin是由武汉深之度科技有限公司开发的Linux发行版&#xff0c;个人认为其界面设计非常美观&#xff0c;而且作为国产操作系统&#xff0c;值得我们去体验和支持&#xff01; 文章目录1.下载安装 VMware Workstation Pro 152.下载 Deepin15.9 系统3.在 VMware 中创建虚拟机4.…

Asp.Net WebForm生命周期的详解

一&#xff0e;http://Asp.Net页面生命周期的概念 当我们在浏览器地址栏中输入网址&#xff0c;回车查看页面时&#xff0c;这时会向服务器端IIS&#xff09;发送一个request请求&#xff0c;服务器就会判断发送过来的请求页面&#xff0c;当完全识别 TTP页面处理程序类后&…

PWN-PRACTICE-CTFSHOW-3

PWN-PRACTICE-CTFSHOW-3pwn10萌新赛-签到题萌新赛-数学99内部赛-签到题pwn10 格式化字符串漏洞&#xff0c;覆写num为16即可打印出flag # -*- coding:utf-8 -*- from pwn import * context.log_level"debug" #ioprocess("./pwn1") ioremote("pwn.ch…

Python PEP8 代码规范常见问题及解决方法

之前一直用 Python IDLE 写代码&#xff0c;最近换成 PyCharm 写代码总是会出现波浪号&#xff0c;这才了解到 Python 的 PEP8 代码规范&#xff0c;所以将常见的 PEP8 代码规范问题和解决方法记录一下&#xff0c;学习一下&#xff0c;遇到了再持续更新&#xff0c;养成良好的…

基于.NET平台的分层架构实战(一)——综述

通过浏览博客园的文章发现&#xff0c;很多朋友对分层架构特别感兴趣&#xff0c;刚好我刚做完的毕业设计就是专门研究.NET平台上分层架构的&#xff08;题目叫“基于.NET平台的分层架构与设计模式应用研究”&#xff09;。通过做这篇论文&#xff0c;我对分层架构有了一定的了…

Eclipse 通过 JDBC 连接 SQL Server

文章目录1.配置 SQL Server 20122.开启 Telnet 服务3.测试1433端口是否打开4.下载JDBC5.Eclipse 连接 SQL Server6.测试连接本文用到的软件版本以及相关环境&#xff1a; Eclipse Photon Release (4.8.0) JDK-10.0.2 SQL Server 2012 1.配置 SQL Server 2012 打开 SQL Server …