赞
踩
ssh
命令验证,出现如下输出,说明已安装成功。设置仅当 Win 10 被远程访问时,默认的 CMD 自动变为 PowerShell,以便直接进入 WSL 2。
在 PowerShell
中输入以下命令(将命令中的 PowerShell 地址换成自己机子上的地址)。
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
免费渠道考虑过花生壳,但无奈对个人用户性价比不高,最后选择 ZeroTier。ZeroTier 可以创建一个虚拟局域网,实现多台机器的互访,缺点是任何需要远程访问的机器都需要安装他的客户端。
Create A Network
创建虚拟网络,获得网络 ID;ZeroTier
,右键选择 Join New Network
,在小窗口中输入上面获取的网络 ID 后,点击右下角的 Join
;Member
卡片,此时列表中会出现已加入该网络的所有设备(如未出现预期设备,可尝试刷新页面),勾选所有设备的 Auth?
列,授予它们访问局域网的权限;本地机 VSCode 安装 Remote -SSH
扩展;
安装后点击 VSCode 左下角图标 ><
,在弹出的命令面板中选择 Open SSH Configuration File...
;
选择 User 目录下的 config
文件;
在文件中输入以下内容
Host remote_wsl # 名称(可自定)
HostName ******** # ZeroTier 分配的**远程机**的 IP 地址
User *** # Windows 系统的用户名
Port 22 # WSL 2 填写 22 端口
保存配置后,再次点击 VSCode 左下角图标 ><
,在弹出的命令面板中选择 Connect to Host...
,选择刚刚配置好的 remote_wsl
。如果 VS Code 未能判断远程服务器类型,则会要求我们自己手动选择类型(这里选择 Windows
),输入密码登录成功后(首次登陆可能会提示是否加入 known_hosts,yes 即可),就可以愉快的编辑代码了。
在本地机生成公钥,在 cmd 或 powershell 中输入 ssh-keygen -t rsa
命令:
进入 C:\Users\用户名\.ssh
(以自己配置的为准)找到公钥文件 id_rsa.pub
,并复制全部文本内容。
进入远程机的 C:\Users\用户名\.ssh
文件夹,创建文件 authorized_keys
(注意:文件无后缀名),将复制的公钥粘贴进去并保存(如果已有该文件,直接在文件内追加该内容)。
打开远程机 C:\ProgramData\ssh\
文件夹下的 sshd_config
文件,修改以下内容(重点),如果保存时提示没有权限,可以用管理员身份打开cmd,用 notepad C:\ProgramData\ssh\sshd_config
命令打开文件编辑即可。
确保以下 3 条没有被注释
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
PasswordAuthentication
:改成 yes 或者 no 都无所谓。如果证书通过了,就不会触发 password 验证。如果证书没过,就提示 password 登录。
确保以下 2 条有注释掉
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
重启远程机 sshd 服务:在服务中找到 OpenSSH SSH Server
,重启即可。
在本地机 ssh 配置 C:\Users\用户名\.ssh\config
文件中补充私钥地址 IdentityFile
:
Host remote_wsl # 名称(可自定)
HostName ******** # ZeroTier 分配的**远程机**的 IP 地址
User *** # Windows 系统的用户名
Port 22 # WSL 2 填写 22 端口
IdentityFile C:\Users\UserName\.ssh\id_rsa # 私钥地址
再次尝试用 VSCode 连接或者在本地机用 ssh 远程机登录用户名@远程机IP
命令(如 ssh Administrator@192.168.123.1
)测试连接,此时不再提示输入密码。
ZeroTier 连接不稳定,可以尝试其他内网穿透方案,或者购买稳定方案。
内网穿透不稳定也会引发此问题,如果排除是网络问题,可尝试将本地机的 C:\Users\用户名\.ssh\known_hosts
文件中关于远程机的所有信息删除,然后保存重新尝试。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。