本文最后更新于 <span id="expire-date"></span> 天前,文中部分描述可能已经过时。
这里以 github 为主,coding 为次,二者邮箱和用户名不一致。
为方便同时部署 hexo 至多个平台,进行以下操作。
全局默认配置
git config --global user.name '主用户名'
git config --global user.email '主邮箱'
ssh-keygen -t rsa -C "主邮箱"
按提示进行。
-C 后面的信息是为了方便自己辨认。
次要配置
生成副账号 coding 的公钥、密钥,同时指定文件名(方便区分)ssh-keygen -t rsa -f ~/.ssh/id_rsa.coding -C "副邮箱"
配置文件
最重要的一步让 github 和 coding 识别不同的公钥、密钥。
在 .ssh 文件夹下面新建 config 文件并配置 config 文件
点击展开
# github |
上传 ssh key
进入 .ssh 文件夹,以文本格式打开 id_rsa.pub
,全选内容并复制,打开 github ssh keys,新建一个公钥。
coding 同理,登录后打开 个人账户设置 - SSH公钥
,这里添加的公钥为 id_rsa.coding
。
测试 ssh 连接
ssh -T git@github.com
成功示例
Hi (你的github用户名)! You've successfully authenticated, but GitHub does not provide shell access. |
ssh -T git@e.coding.net
成功示例
CODING 提示: Hello (用户名), You've connected to coding.net via SSH. This is a Personal Key. |
一切检查妥当之后,可将 .ssh
文件夹压缩加密,转移同步设备时直接解压至相应目录,无需重新配置。
⚠⚠⚠ 踩坑
- 操作和配置填写检查不出错误,可副账号 coding 总是验证失败……
最终发现是 config 文件的权限有问题(万恶的 system read-only),使用 mt 管理器将其设置为 “三读一写三执行 755”
点击展开
重新 ssh -T git@e.coding.net
即可验证成功。
- git 连接总是需要密码验证
如果上面的 ssh 验证成功,可git fetch
、git clone
时仍然要求输入账号密码,
这是由于前面添加远程地址的时候不小心使用了 https 链接,它是不走 ssh 验证的。
运行git remote -v
可见 https 标头
origin https://github.com/xxx/xxx.git (fetch) |
解决方法:重新设置远程地址,从 https 切换到 ssh ,使用下面的格式git remote set-url origin git@github.com:用户名/仓库名.git
至此应该没问题了。
本文作者:青菜芋子
本文链接: https://loafing.cn/posts/ssh-github-coding.html
文章默认采用 CC BY-NC-SA 4.0 许可协议,如有转载请注意遵循。
评论