起因
本着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
Windows下的导入
ssh-key的导入
在用户主目录下的.ssh
文件夹中分别新建id_rsa.pub
和id_rsa
两个文件,并分别打开之前保存好的ssh.pub.txt
和ssh.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
导入私钥时会提醒你设定密码,输入即可。
其他
测试导入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下自行创建对应文件然后将密钥内容复制进去就不会出现问题了。