写上一篇文章时,我还在迷茫博客的未来,但时间总会给人答案

为什么要共用密钥?

最近经常在多台电脑之间来回切换,每次推送代码到GitHub,如果都要重新配置SSH密钥,实在麻烦。
所以去网上找SSH验证原理了解一下,发现其实只要在两台电脑放相同的密钥对文件,GitHub就会认为这是同一台设备。于是写了简单个脚本方便自动化部署。

SSH验证原理

当客户端通过SSH连接GitHub服务器时,认证流程分为三个关键步骤:

  1. 生成随机字符串
    服务器生成随机字符串(Challenge),用客户端预存的公钥加密后下发

  2. 本地解密
    客户端使用私钥id_rsa解密得到原始字符串,生成数字签名回传

  3. 签名验证
    服务器用存储的公钥id_rsa.pub验证签名有效性,匹配则授权访问

整个过程依赖非对称加密特性:

  • 公钥加密的内容只能被对应私钥解密
  • 私钥签名的数据可通过公钥验证来源

因此,只要在多台设备部署相同的密钥对,服务器就会视为同一客户端。

手动操作

手动操作只需要将可用的密钥对文件,转移到Windows的ssh文件夹即可,路径一般为%USERPROFILE%\.ssh。即进入旧电脑的.ssh文件夹中复制可用的id_rsaid_rsa.pub并保存留,在新电脑的.ssh文件夹释放密钥对文件。

SSH 密钥迁移工具

一个用于在Windows系统间迁移SSH密钥的批处理工具,支持备份和恢复模式。

功能特性

  • 一键备份SSH密钥到脚本目录
  • 自动恢复密钥到新设备的用户目录
  • 操作日志记录功能
  • 管理员权限自动检测

使用说明

备份模式(旧设备)

  1. 右键以管理员身份运行脚本
  2. 选择模式 1
  3. 脚本会自动将密钥备份到同级目录的ssh_backup文件夹

恢复模式(新设备)

  1. 将整个项目文件夹复制到新设备
  2. 运行脚本并选择模式 2
  3. 密钥会被还原到%USERPROFILE%\.ssh

⚠️ 重要提示;
建议在恢复后执行权限重置:

1
icacls "%USERPROFILE%\.ssh" /reset /T /C

AICommit2

@(tak-bro)[一个响应式CLI,使用Ollama、ChatGPT、Gemini、Claude、Mistral和其他AI生成git提交消息]

📷 AICommit2

最近在开发过程中有对提交信息(commit message)的规范化需求,于是在网上翻了翻用于自动生成commit message的开源应用,其中感觉AICommit2的配置很方便,并且支持任何实现 OpenAI API 规范的服务。
我正好有腾讯混元大模型的免费包,而且混元也支持兼容OpenAI,尝试生成了几次commit message,效果还行。

AICommit2 的安装及配置

1
2
3
4
npm install -g aicommit2
aicommit2 config set OPENAI.key=<your key>
aicommit2 config set OPENAI.model=hunyuan-turbos-latest
aicommit2 config set OPENAI.url=https://api.hunyuan.cloud.tencent.com/v1

一般来说,任意的大模型API只要兼容了 OpenAI 的接口规范,都可以如上面这般配置,仅需要将相关的keymodelurl替换上即可。

使用方法

进入git存储库,并对其中的文件进行一定的操作后,使用命令将工作区中的文件更改添加到暂存区,即可使用AICommit2来帮助生成commit message

1
2
git add <files...>
aicommit2

👉 提示: 如果觉得 aicommit2 太长,可以使用缩写 aic2