同一部机器下配置多个ssh和用hexo搭建博客
不得不吐槽一下,有时候,问人真是一件很恶心的事情,特别是技术上的问题。因为有时候自己一直在捣鼓某个问题,担心自己钻入死胡同,浪费时间,就回想着问问同事吧,问问同行吧,问到知道的还好,问到不知道的也好,问到不知道装知道的那就真是操蛋,,好了,不多说废话了。
原本是想着用Hexo搭建自己的博客的,想想这是好事啊,,就动起手来开搞啦~可是环境各方面都搞好啦~,想想,在公司项目紧哪来那么多时间给你去网上写文章吐槽啊,,,那么就想着把自己的电脑也搭个环境来吧。嗯哼,别比比,动手。
此处顺便写一下真个简单的流程吧~
简介:hexo是一款基于Node.js的静态博客框架
配置环境
- 安装Node(必须)
作用:用来生成静态页面的
到Node.js官网下载相应平台的最新版本,一路安装即可。 - 安装Git(必须)
作用:把本地的hexo内容提交到github上去.
安装Xcode就自带有Git,我就不多说了。 - 申请GitHub(必须)
github账号我也不再啰嗦了,没有的话直接申请就行了,跟一般的注册账号差不多,SSH Keys,看你自己了,个人觉得要配,因为我这篇文章主要就是吐槽这个来的。网上有很多教程,但是,我就呵呵。稍后在说一下吧。
正式安装Hexo
Node和Git都安装好后,首先创建一个文件夹,如,用户存放hexo的配置文件,然后进入里安装Hexo。
执行如下命令安装Hexo:
sudo npm install -g hexo
初始化然后,执行init命令初始化hexo,命令:
hexo init
好啦,至此,全部安装工作已经完成!blogName就是你的博客根目录,所有的操作都在里面进行。完成后可以在hexo官网自己查看喜欢的网站风格clone下来改配置网站的文件_config.yml就可以了,这里不详细说。
生成静态页面
hexo generate(hexo g也可以)
启动本地服务,进行文章预览调试,命令:
hexo server
浏览器输入http://localhost:4000
配置Github
建立Repository
建立与你用户名对应的仓库,仓库名必须为【your_user_name.github.io】,固定写法
ex:我的用户名是zhongxuanrui,我的博客仓库名是zhongxuanrui.github.io发布之后博客访问路径就是https://zhongxuanrui.github.io/
建立关联
blogName是之前建的东西也全在这里面,有:
_config.yml node_modules public source
db.json package.json scaffolds themes
对_config.yml进行修改
deploy:
type: git
repo: git@github.com:zhongxuanrui/zhongxuanrui.github.io.git
branch: master
注意: repo的路径是要ssh的路径,不是https的路径
这时候就和git仓库关联起来了。
这时候除了本地,外面还访问不到博客,还需要将它发布出去
所以执行命令:
npm install hexo-deployer-git –save
然后,执行发布命令:
hexo deploy 也可以是 hexo d
每次部署的步骤,可按以下三步来进行。
hexo clean
hexo generate
hexo deploy
一些常用命令:
hexo new “postName” #新建文章
hexo new page”pageName” #新建页面
hexo generate #生成静态页面至public目录
hexo server #开启预览访问端口(默认端口4000,’ctrl + c’关闭server)
hexo deploy #将.deploy目录部署到GitHub
hexo help # 查看帮助
hexo version #查看Hexo的版本
因为我的电脑本地本身已经存在了早前用的github的账号,现在发布博客是新建的一个github账号,所以只能配置多个ssh了。
- cd .ssh
- ssh-keygen -t rsa -C “your_email@email.com” 回车回询问输入一个文件名字,默认就是id_rsa
或者 ssh-keygen -t rsa -C “your_email@email.com” -f ~/.ssh/custom_rsa
修改 ~/.ssh 下的 config 文件
如果没有,可以自己新建一个
配置内容如下:
//#github
Host name_1
HostName github.com
User email@qq.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa//# github
Host name_2
HostName github.com
User email@qq.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_1
以上各字段说明:
Host:主机名字,不能重名(克隆仓库的时候将用这个名字。ex:git@name_1:zhongxuanrui/zhongxuanrui.github.io.git 接下来有情景)
HostName:主机所在域名或IP
User:服务器上的用户名(邮箱)
PreferredAuthentications:不填此行的话,如果pubkey验证不通过可以用密码方式;填了publickey
只能通过公钥验证的方式
IdentityFile:私钥路径(一般是在.ssh文件夹下)
检查成功与否
输入命令:ssh -T git@github.com
显示这个说明成功了 Hi zhongxuanrui! You’ve successfully authenticated, but GitHub does not provide shell access.
情景
我们有两个github账号A和B我们如何让两个ssh不互相影响,并且git操作时能智能匹配私钥?
解决方案:
上面的Host字段其实是任意的,git操作时会有一个映射,将Host映射到目标域名或ip(HostName)
所以我们可以这么干:
Host a.github.com
Hostname github.com
User git
Identityfile ~/.ssh/a_github_rsaHost b.github.com
HostName github.com
User git // 用户名称
IdentityFile ~/.ssh/b_github_rsa
注意:公私钥命名要对应
然后 ssh 的地址要更改一下,比如 A 账号的 repo 仓库原本的地址是
git@github.com:A/repo.git,配置了ssh 后,我们使用
git@a.github.com:A/repo.git
到这里就基本完成了(记得把公钥复制到远端仓库),使用ssh -T a.github.com测试一下吧
然后 回到申请的github账号 配置一下ssh才能真正的关联起来。
打个.ssh文件夹下面刚刚所创建对应名字的密钥,用编辑器打开custom_rsa.pub。复制里面的内容。
新建一个ssh key 这时候就完成了所有的步骤啦~~~