WSL共享Windows的SSH配置

众所周知WSL和Windows各自维护一套SSH配置,也就是说Windows下配置的SSH别名不能在WSL下使用,同时Windows下也没有ssh-copy-id这个好东西。由于我经常在Windows下使用VSCode远程开发,所以之前我非常愚蠢的每次都切换到WSL下启动ssh-copy-id -i配置免密登录,因此想让WSL共享Windows的SSH别名和公钥。

Windows下生成SSH密钥

老掉牙的问题了,在Powershell下执行ssh-keygen.exe,然后狂按回车(如果不想每次SSH公钥登录都输一次密码的话)。公钥就会生成在Windows用户目录下的.ssh文件夹里。

WSL下软连接.ssh文件夹

这一步也很正常。

1
2
3
# WSL Environment
cd ~
ln -s /mnt/c/Users/<Your Name>/.ssh .

配置~/.ssh文件夹权限

这一步有点坑,默认情况下在WSL下修改Windows文件夹权限是不会生效的,所以需要稍加配置。编辑/etc/wsl.conf(没有就创建一个),建议使用nano编辑。

1
sudo nano /etc/wsl.conf

并写入以下内容:

1
2
[automount]
options = "metadata"

保存并通过Powershell重启WSL。

1
2
# Powershell Environment
wsl.exe --shutdown

最后给~/.ssh文件夹配置权限

1
2
3
4
# WSL Environment
cd ~/.ssh
chmod 644 config
chmod 400 id_rsa

参考文章