[英]Share Git and SSH config between Windows 10 and WSL2
我在 Windows 10 上安装了 Putty 和 Git,而且我还在使用 WSL2 和 Ubuntu 20.04 LTS。 有时我想在 WSL2 中使用 SSH 和 Git,其他时候在 Windows 中使用。 一切正常,除了我必须在 Windows 和 WSL2 主目录中复制我的.gitconfig
、 .gitignore
和.ssh
文件。
我不想在两个地方维护这个配置,所以我想我可以在 WSL2 中对文件进行符号链接:
# In /home/myuser on WSL2
ln -s /mnt/c/Users/myuser/.ssh
ln -s /mnt/c/Users/myuser/.gitconfig
ln -s /mnt/c/Users/myuser/.gitignore
这种工作,除了一些问题。
/mnt/c
中的文件具有0777
权限,而chmod
显然对它们没有任何作用。 当我在 WSL2 中使用ssh
时,它抱怨密钥:'/home/myuser/.ssh/id_rsa Permissions 0777 for '/home/myuser/.ssh/id_rsa' are too open
.gitconfig
,我将core.excludesfile
设置为C:\\\\Users\\myuser\\.gitignore
,这在使用 Git 的 Git 时有效,但不是来自 WSB28E0CDA4SL30Z。 如果我将其更改为/home/myuser/.gitignore
它在 WSL2 中有效,但在 Windows 中无效。 我尝试使用相对路径.gitignore
并完全删除core.excludesfile
指令,但都没有奏效。 有谁知道解决这些问题的方法? 我确实想到 Putty 并不关心 SSH 密钥权限,因此我可以将文件移动到 WSL2,然后更新我的 Putty 连接(我有很多!)以通过\\wsl$
访问密钥。 但是,这并不能解决core.excludesfile
问题,我更愿意在 Windows 中维护配置并通过/mnt/c
在 WSL2 中访问它。
附加上下文
我正在将我的开发环境从 Windows 转换为 WSL2,使用 PhpStorm 和 Docker 进行 PHP 开发。 我已将 Docker 切换为使用 WSL2 后端而不是 Hyper-V,并将我的项目文件(即 git 存储库)移动到 WSL2。 然后我使用\\wsl$
共享在 PhpStorm 中打开项目。 所有这一切都很好,我喜欢它的速度有多快,但是必须复制 git 配置和 ssh 键很烦人。
我找到的解决方案是在 WSL 副本上安装 windows ssh 配置文件夹。
在 WSL1/2 的/etc/fstab
中,添加相应的条目:
# WSL 1 - mount C: with correct permissions, then bind mount .ssh
C: /mnt/c drvfs rw,noatime,uid=1000,gid=1000,case=off,umask=0077,fmask=0077 0 0
/mnt/c/Users/me/.ssh /home/me/.ssh none bind,default 0 0
# WSL2
C:\Users\me\.ssh\ /home/me/.ssh drvfs rw,noatime,uid=1000,gid=1000,case=off,umask=0077,fmask=0177 0 0
根据需要更新用户名和 UID/GID。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.