受限于磁盘空间不足,并且囊中羞涩换不起 SSD,只好删除了使用了大半年的黑苹果系统。在提前备份了 macOS 下的 SSH、GPG 公私密钥之后,快速地重装了 Windows。在安装完 Git for Windows 之后,打开Git Bash准备手动添加 SSH key:

1
2
$ mkdir ./.ssh && cd .ssh
$ touch ./id_rsa && touch ./id_rsa.pub

之后,利用文本编辑器将之前导出的公私钥粘贴进去,保存。之后测试SSH Key是否正常运作:

1
2
$ ssh -T [email protected]
Permission denied (publickey).

诶,为什么不能用?我再次检查了我的公钥,确认无误。于是立即打开ぐぐる搜索一番,原来是要先导入:

1
2
$ ssh-add ./id_rsa
Could not open a connection to your authentication agent.

查了资料说这是因为没有开启ssh-agent,那就开启:

1
$ eval `ssh-agent -s`

这下子该OK了吧…(実は無駄…):

1
2
$ ssh-add ./id_rsa
Error loading key "./id_rsa": invalid format.

??? 我满脸黑人问号….

再次查找相关资料,得知可能需要转换私钥格式,用的工具是PuTTYGen

选择菜单栏 -> Conversions -> Import key, 然后选择你保存的私钥文件。然后回到主界面你会看到自己的私钥的信息,之后再次选择 Conversions -> Export OpenSSH key (force new file format),并将其保存。

PuTTYGen下导出新格式的私钥

之后利用这个导出的新格式的私钥替换.ssh目录下面的私钥文件,并再次执行:

1
2
$ eval `ssh-agent -s` && ssh-add ~/.ssh/id_rsa
Identity added: /c/Users/USERNAME/.ssh/id_rsa (EMAIL_ADDRESS)

此时再测试与GitHub的连通性:

1
2
$ ssh -T [email protected]
Hi moposx! You've successfully authenticated, but GitHub does not provide shell access.

やった!真是费了一番工夫呢!

接下来导入GPG公私钥,这个就简单多了,将备份的时候导出的公私钥文件分别导入(已经导入过,所以这是unchanged):

1
2
3
4
$ gpg --import ./pgp-pubkey-export.txt
gpg: key AC3197957F4E8FFB: "Maxfield Wang (a.k.a. moposx) <[email protected]>" not changed
gpg: Total number processed: 1
gpg: unchanged: 1

私钥(需要你输入passphrase,希望你并没有忘记(忘れないで!)):

1
2
3
4
5
6
7
$ gpg --allow-secret-key-import --import ./pgp-seckey-export.txt
gpg: key AC3197957F4E8FFB: "Maxfield Wang (a.k.a. moposx) <[email protected]>" not changed
gpg: key AC3197957F4E8FFB: secret key imported
gpg: Total number processed: 1
gpg: unchanged: 1
gpg: secret keys read: 1
gpg: secret keys unchanged: 1

公钥已经上传到MIT PGP Key server,但他们的服务最近可能有点问题,于是另在Ubuntu Keysever传了一份。

这样就成功平滑地过渡到了新系统(似乎时间成本大于直接生成新SSH key,不过折腾一番还是蛮有收获的!)