开启WSL的ssh访问
我不打算开启Windows的ssh,只是想开WSL的ssh,因为sb微软服务器太难连了,下载不了openssh
1. 测试开启ssh
步骤如下:
- WSL中安装openssh-server
- 修改默认的22端口,避免与Windows SSH冲突
- 添加Windows防火墙规则,允许端口转发
测试:
- sudo apt update && sudo apt install openssh-server
- 编辑/etc/ssh/sshd_config
在末尾插入即可:(用户名记得改)
Port 2222
PasswordAuthentication yes
PermitRootLogin no
AllowUsers your_username
- sudo service ssh start
- Windows中执行
New-NetFirewallRule -DisplayName "WSL SSH" -Direction Inbound -LocalPort 2222 -Protocol TCP -Action Allow
$wsl_ip = (wsl hostname -I).Trim()
netsh interface portproxy add v4tov4 listenport=2222 listenaddress=0.0.0.0 connectport=2222 connectaddress=$wsl_ip
- 外部测试一下:
ssh -p 2222 your_username@192.168.x.x(用主机IP连接)
2. 开机自动开启ssh
测试没问题之后,直接编辑/etc/wsl.conf,在每次开启wsl时都会执行
我的/etc/wsl.conf如下,其中第一和二行是系统原来的东西
[boot]
systemd=true
command = "service ssh start"
command = "powershell.exe -Command 'New-NetFirewallRule -DisplayName "WSL SSH" -Direction Inbound -LocalPort 2222 -Protocol TCP -Action Allow'"
command = "powershell.exe -Command '$wsl_ip = (wsl hostname -I).Trim(); netsh interface portproxy add v4tov4 listenport=2222 listenaddress=0.0.0.0 connectport=2222 connectaddress=$wsl_ip'"
3. 最后
还不够自动化?端口占用了怎么办,能不能开启Windows时自动开启WSL?……自己折腾去吧