头图:Pixiv_id=74805730(p0)

起因

本着Linux生产力Windows打游戏的设想,电脑装的是windows+linux双系统,然而事实上很多时候都是开着Windows时心血来潮或是怎样怎样etc.又需要进行编程开发,想使用git却发现没法直接用ssh-key免去账号密码的麻烦,遂决定将Linux中使用的ssh-key与gpg-key导入至Windows中共用。

前置软件

下面这些Windows与Linux下都应该安装(这些是主角啊喂这些都没安装还折腾个啥

  • openssh
  • git
  • gpg(我使用的是Gpg4win)

Linux下的导出

导出ssh

# 导出ssh公钥至txt
cat ~/.ssh/id_rsa.pub > ~/ssh.pub.txt 
# 导出ssh私钥至txt
cat ~/.ssh/id_rsa > ~/ssh.key.txt

导出GPG

gpg -k #列出私钥
# 或 gpg --list-public-keys

# 导出公钥
gpg -a -o public-file.key --export 这里是你上方列出的密钥id

# 导出私钥
gpg -a -o private-file.key --export-secret-keys 这里是你上方列出的密钥id

截图录屏_deepin-terminal_20210101214417.png

最后记得把这几个导出的密钥文件拷贝至Windows也能访问到的地方

Windows下的导入

ssh-key的导入

在用户主目录下的.ssh文件夹中分别新建id_rsa.pubid_rsa两个文件,并分别打开之前保存好的ssh.pub.txtssh.key.txt并对应将内容粘贴进去,最后记得保存。
用户主目录因人而异,如果没有做过特殊修改的话默认是C:\Users\你的用户名\目录。
至于为什么不在Linux中将原始的文件复制过来,是因为可能会遇到权限问题,见下↓

gpg-key的导入

# 导入GPG公钥,其中I:\gpg-public-key.txt替换为你自己之前保存的公钥路径
gpg --import I:\gpg-public-key.txt
# 导入GPG私钥,其中I:\gpg-secret-key.txt替换为你自己之前保存的公钥路径
gpg --allow-secret-key-import --import I:\gpg-secret-key.txt

导入私钥时会提醒你设定密码,输入即可。

QQ截图20210101224329.png

其他

测试导入ssh-key后git的连接

ssh git@github.com
$ Hi Raobee! You've successfully authenticated, but GitHub does not provide shell access.
$ Connection to github.com closed.

至于git使用GPG-key来进行认证的方法,网上已经给出很多了,这里不再赘述,Windows与Linux下的操作类似

关于直接复制Linux中key文件的权限问题

我之前尝试将Linux中的ssh-key文件直接复制到Windows中的.ssh目录下,然后出现了如下报错:

Permissions for 'C:\\Users\\raoby/.ssh/id_rsa' are too open
搜索发现id_rsa文件权限,应该设置为仅针对所有者(您)的rwx(读取,写入,执行),而对其他人则为零。
而在Windows中的权限系统与Linux中并不相同,为避免麻烦,直接在Windows下自行创建对应文件然后将密钥内容复制进去就不会出现问题了。

参考文献

Last modification:January 2, 2021
觉得有帮助的话,打赏一个呗~