安裝openssh
首先需要安裝openssh-server和openssh-client。
然後修改sshd-config配置
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iMxUzMhJWOxIzM2QmY4MTM2AjZmhjNxEWY4MDMwETMi9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
這裡需要關注的就是這三行。
1UsePrivilegeSeparation no #因為wsl沒有實作chroot
2PasswordAuthentication yes
3ListenAddress 0.0.0.0 #這一項在我的發行版裡預設為注釋行。
其他的可以根據需求修改。
1ListenAddress 0.0.0.0 # 要讓其他計算機能連接配接上需要加上這一行,或者把經常需要連接配接的計算機IP加入
2PermitRootLogin yes # 允許root使用者登入。
關閉Windows自帶的ssh
我原本還不知道的,查了資料才知道新版Windows自帶了ssh服務,不過怎麼使用還沒有了解。
可以使用powershell來檢視這個服務。
1PS C:\Users\user> Get-Service -Name ssh*
2Status Name DisplayName
3------ ---- -----------
4Stopped SshBroker SSH Server Broker
5Stopped SshProxy SSH Server Proxy
在服務控制台裡找到這兩個服務停掉就行了。
注意要先停掉sshproxy才可以關掉sshbroker。
以調試方式啟動ssh
1/usr/sbin/sshd -d
-d表明是以調試方式啟動的服務,這種情況下,錯誤會顯示在控制台上。
要注意即使以這種方法啟動ssh server,它仍然隻是在存在bash視窗時的一個子服務。一旦最後一個bash視窗關閉,這個ssh server也就關閉了,顯然這不是我們想要的。接下來看看怎麼将ssh server以windows服務或者背景程序來運作。
正常開啟ssh
1service ssh start
自動啟動ssh服務
目前WSL并不支援ssh server作為服務運作。我們需要借助windows計劃任務和腳本,使得在windows啟動時自動運作這一服務。
1set ws=wscript.createobject("wscript.shell")
2ws.run "C:\Windows\System32\bash.exe -c '/usr/sbin/sshd -D'",0
将這個檔案存為vbs,并在計劃任務中添加一個啟動任務,觸發器設定為系統啟動時。
不過使用這個方法的前提是你的WSL預設使用者是root,對于預設使用者不是root的必須使用sudo方式啟動。
執行sudo時,會提示輸入密碼,而這時又無法拿到使用者的輸入。要解決這一問題,需要允許sudo在沒有密碼的情況下執行指令。
在bash裡輸入指令:
1sudo visudo
1#includedir /etc/sudoers.d
2username ALL=(ALL) NOPASSWD: /usr/sbin/sshd -D
把username改成你自己的使用者名即可。