• 针对github权限导致hexo部署失败的解决方案


    hexo deplay出错,没有反应

    今天想在自己的另一个博客地址(链接地址)上更新一下博客,没想到hexo deplay没有反应,以下是解决过程:(更新于 2016-12-24 11:17:43)

    1、因为没有报错信息,所以直接在网上搜解决方案,集广大网友们的智慧,然后使用了npm install hexo-deployer-git --save,而后hexo deploy,但是没有解决问题,而且爆出警告:

    npm WARN optional Skipping failed optional dependency /chokidar/fsevents:
    npm WARN notsup Not compatible with your operating system or architecture: fsevents@1.0.15
    

    2、更新npm npm install npm -g ,更新成功

    3、继续npm install hexo-deployer-git --save,hexo deploy 还是不行:

    INFO  Deploying: git
    INFO  Clearing .deploy_git folder...
    INFO  Copying files from public folder...
    fatal: Not a git repository (or any of the parent directories): .git
    FATAL Something's wrong. Maybe you can find the solution here: http://hexo.io/docs/troubleshooting.html
    Error: fatal: Not a git repository (or any of the parent directories): .git
    
        at ChildProcess.<anonymous> (E:logHexoBlog
    ode_moduleshexo-utillibspawn.js:37:17)
        at emitTwo (events.js:87:13)
        ……
        (E:logHexoBlog
    ode_modulescross-spawnlibenoent.js:40:29)
        at maybeClose (internal/child_process.js:827:16)
        at Socket.<anonymous> (internal/child_process.js:319:11)
        at emitOne (events.js:77:13)
        at Socket.emit (events.js:169:7)
        at Pipe._onclose (net.js:477:12)
    
    
    

    4、后来灵机一动,把.deploy_git文件夹手动删除了,重新hexo deploy了一次,成功!


    问题描述:

    如题,hexo最后一次部署是在8月份,然后就是秋招,一直没有在hexo博客上上传新博文,等回过头打算整理几篇博客上传,发现一直部署失败,通过搜索网上前辈们的经验,我决定重新使用hexo+github pages搭建博客(顺便更新版本了),然而······并没有什么卵用······

    错误依旧如下(这已经是重复设置SSH key后的错误版本啦,与一开始的错误描述略有不同,不过都是github权限问题):

    Permission denied (publickey).
    fatal: Could not read from remote repository.
    
    Please make sure you have the correct access rights
    and the repository exists.
    FATAL Something's wrong. Maybe you can find the solution here: http://hexo.io/docs/troubleshooting.html
    Error: Warning: Permanently added 'github.com,192.30.253.112' (RSA) to the list of known hosts.
    Permission denied (publickey).
    fatal: Could not read from remote repository.
    
    Please make sure you have the correct access rights
    and the repository exists.
    
        at ChildProcess.<anonymous> (E:logHexoBlog
    ode_moduleshexo-utillibspawn.js:37:17)
        at emitTwo (events.js:87:13)
        at ChildProcess.emit (events.js:172:7)
        at ChildProcess.cp.emit (E:logHexoBlog
    ode_modulescross-spawnlibenoent.js:40:29)
        at maybeClose (internal/child_process.js:827:16)
        at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)
    FATAL Warning: Permanently added 'github.com,192.30.253.112' (RSA) to the list of known hosts.
    Permission denied (publickey).
    fatal: Could not read from remote repository.
    
    Please make sure you have the correct access rights
    and the repository exists.
    
    Error: Warning: Permanently added 'github.com,192.30.253.112' (RSA) to the list of known hosts.
    Permission denied (publickey).
    fatal: Could not read from remote repository.
    
    Please make sure you have the correct access rights
    and the repository exists.
    
        at ChildProcess.<anonymous> (E:logHexoBlog
    ode_moduleshexo-utillibspawn.js:37:17)
        at emitTwo (events.js:87:13)
        at ChildProcess.emit (events.js:172:7)
        at ChildProcess.cp.emit (E:logHexoBlog
    ode_modulescross-spawnlibenoent.js:40:29)
        at maybeClose (internal/child_process.js:827:16)
        at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)
    

    之前的错误,有网友们有建议将deploy处设置不要使用https,而是改为SSH,如下:

    repository: https://github.com/username/username.github.io.git
    

    修改为

    repo:git@github.com:username/username.github.io.git
    

    修改了很多遍,以各种姿势······然而还是没有什么卵用

    当然错误不是重点,重点是怎样使我们的博客可以重新部署到github上~

    当部署失败的时候,请按照以下步骤进行:

    (当然,在此之前,你可以选择 hexo init)教程有很多,一搜就可以,懒癌症可以点击传送门,这是一个比较全的搭建配置教程。

    (1)检查是否有SSH key

    登陆github,点击头像位置处 Settings ——> SSH and GPG keys ,查看是否有SSH keys。如果有,直接跳到第(3)步;如果没有,则继续。

    (2)新建 SSH key,在git shell(或者git bash等命令窗口),注意大小写:

    $ ssh-keygen -t rsa -C "邮箱名"
    

    然后会出现:

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

    直接回车就可以。
    然后会出现:

    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    

    要求你输入密码,这个密码会在你提交项目时使用,如果为空的话提交项目时则不用输入。这个设置是防止别人往你的项目里提交内容。

    注意:输入密码的时候没有*字样的,直接输入就好。
    然后会出现:

    Your identification has been saved in /c/Users/dell/.ssh/id_rsa.
    Your public key has been saved in /c/Users/dell/.ssh/id_rsa.pub.
    The key fingerprint is:
    65:69:······02:4b emailname@email.com
    The key's randomart image is:
    +--[ RSA 2048]----+
    |                 |
    |       .   o .   |
    |    . o o = o    |
    |   . o * = o     |
    |  E  o + o .     |
    | . o.   . .      |
    |     ..          |
    +-----------------+
    

    至此,密钥已经成功生成。

    (3)接下来在github上添加SSH key:

    ① 打开本地文件:id_rsa.pub(文件路径可以在上一步SSH生成成功后看到路径,比如我的是c/Users/dell/.ssh/id_rsa.pub),可以将这个文件在编辑器中打开,然后全选复制。

    ② 登陆github,点击头像位置处 Settings ——> SSH and GPG keys ——> New SSH key,点击新建SSH key。

    ③ 将 ① 中复制的内容粘贴在key文本框里,title可以不用填(或者自己起一个名字也可以)。

    (4)测试设置是否成功:

    $ ssh -T git@github.com
    

    有可能会出现:

    The authenticity of host 'github.com (192.30.252.1)' can't be established.
    RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
    Are you sure you want to continue connecting (yes/no)?
    

    或者是

    The authenticity of host 'github.com (192.30.252.1)' can't be established.
    RSA key fingerprint is nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
    Are you sure you want to continue connecting (yes/no)?
    

    这种情况下,直接 yes 回车

    然后会出现(也可能在 ++$ ssh -T git@github.com++ 之后,直接出现的就是这个,我就是这样~):

    Hi username! You've successfully authenticated, but GitHub does not 
    provide shell access.
    

    (5)设置用户信息:

    $ git config --global user.name "用户名"
    $ git config --global user.email  "你希望的邮箱名"
    

    (6)然后就可以部署你的博客到github啦~

    $ hexo g
    $ hexo d
    

    (7)更多常见hexo命令,传送门

    补充1:过程中也遇到一些其他问题,比如Error: Bad file number,但是总的来说,按照上面的步骤就可以解决因为github权限问题hexo部署失败的问题(前提是你的配置文件的内容没有问题)。

    补充2:windows系统不要使用它自己的命令窗口!!!使用git shell或者 git bash 等之类的一些工具。

    引用借鉴:

    Generating an SSH key

    common SSH Problems

    hexo常用命令笔记

    hexo你的博客

    本文链接:http://www.cnblogs.com/xsilence/p/6001938.html

  • 相关阅读:
    [动图演示]Redis 持久化 RDB/AOF 详解与实践
    挑战10个最难的Java面试题(附答案)【上】
    Python使用psutil模块,做你的电脑管家
    在线工具 正则表达式
    [USACO09JAN]Earthquake Damage
    [USACO09MAR]Moon Mooing
    [HNOI2005]汤姆的游戏
    [SDOI2010]大陆争霸
    [USACO08NOV]Cheering up the Cow
    [USACO08NOV]lites
  • 原文地址:https://www.cnblogs.com/xsilence/p/6001938.html
Copyright © 2020-2023  润新知