繁体   English   中英

在 Windows 10 和 WSL2 之间共享 Git 和 SSH 配置

[英]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

这种工作,除了一些问题。

  1. /mnt/c中的文件具有0777权限,而chmod显然对它们没有任何作用。 当我在 WSL2 中使用ssh时,它抱怨密钥:'/home/myuser/.ssh/id_rsa Permissions 0777 for '/home/myuser/.ssh/id_rsa' are too open
  2. .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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM