hexo-sshkey 多个sshkey的问题

摘要:
解决使用多个sshkey的问题;
ssh-add和ssh-agent命令使用说明;

解决coding的hexo中github push时报错

定位错误原因

  1. 查看当前git配置:git config —list
  2. 查看ssh链接过程:ssh -vT git@github.com

通过git config —list发现,remote.origin.url很显然是不对的,用vim直接改了;
通过ssh -vT git@github.com发现,使用的sshkey公钥文件是默认的id_rsa.pub,而应该用github_rsa.pub,这就是问题的原因;

PS:使用ssh-add -l显示ssh-agent中的密钥。关于ssh-add的详细解释本文底部。

参考资料:

生成ssh key步骤

这里以配置github的ssh key为例:

  1. 配置git用户名和邮箱

git config user.name “用户名”
git config user.email “邮箱”
在config后加上 —global 即可全局设置用户名和邮箱。

  1. 生成ssh key

ssh-keygen -t rsa -C “邮箱”
然后根据提示连续回车即可在~/.ssh目录下得到id_rsa和id_rsa.pub两个文件,id_rsa.pub文件里存放的就是我们要使用的key。

  1. 上传key到github

clip < ~/.ssh/id_rsa.pub
复制key到剪贴板
登录github
点击右上方的Accounting settings图标
选择 SSH key
点击 Add SSH key

  1. 测试是否配置成功

ssh -T git@github.com
如果配置成功,则会显示:
Hi username! You’ve successfully authenticated, but GitHub does not provide shell access.

ssh-add命令

  1. 功能作用
    把专用密钥添加到 ssh-agent 的高速缓存中

  2. 位置
    /usr/bin/ssh-add

  3. 格式用法
    ssh-add [-cDdLlXx] [-t life] [file …]
    ssh-add -s pkcs11
    ssh-add -e pkcs11

  4. 主要参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-c      Indicates that added identities should be subject to confirmation
before being used for authentication. Confirmation is performed

by the SSH_ASKPASS program mentioned below. Successful confirma‐
tion is signaled by a zero exit status from the SSH_ASKPASS pro‐
gram, rather than text entered into the requester.

-D 删除ssh-agent中的所有密钥.
-d 从ssh-agent中的删除密钥
-e pkcs11
删除PKCS#11共享库pkcs1提供的钥匙。

-s pkcs11
添加PKCS#11共享库pkcs1提供的钥匙。

-L 显示ssh-agent中的公钥
-l 显示ssh-agent中的密钥
-t life
对加载的密钥设置超时时间,超时ssh-agent将自动卸载密钥

-X 对ssh-agent进行解锁
-x 对ssh-agent进行加锁

应用实例

  • 把专用密钥添加到 ssh-agent 的高速缓存中
    ssh-add ~/.ssh/id_dsa

  • 从ssh-agent中删除密钥
    ssh-add -d ~/.ssh/id_xxx.pub

  • 查看ssh-agent中的密钥
    ssh-add -l