WSL優化之SSH遠程登錄篇


Some of the most devastating things that happen to you will teach you the most.
有些最打擊你的事情反而教會你的東西越多。

重裝原有SSH

sudo apt remove openssh-server
sudo apt install openssh-server

先解釋一下WSL的網絡,作為子系統的Ubuntu Linux和Windows主系統的IP是一樣的。如果在Linux上搭建了Nginx服務器,那么在Windows上的瀏覽器上輸入localhost是可以訪問Nginx服務的。如果在Linux上運行netstat -nlp是不會看到任何端口服務的。在Linux上啟用端口服務的時候,Windows系統會彈出窗口,詢問是否允許相關端口訪問。

WSL上的Ubuntu默認安裝了openssh-server,也就是ssh服務的軟件。但是,這個軟件的配置是不完整的,如果啟用服務,會報缺失幾個密鑰文件。為了解決這個問題,我們需要重新安裝openssh-server:

重新安裝完還不行,因為WSL上的Ubuntu的SSH服務配置默認不允許密碼方式登錄,我們需要改配置:

更改配置文件

sudo vim /etc/ssh/sshd_config

將以下配置復制到sshd_config配置文件

Port 2222   #設置ssh的端口號, 由於22在windows中有別的用處, 盡量不修改系統的端口號
PermitRootLogin yes   # 可以root遠程登錄
PasswordAuthentication yes     # 允許密碼驗證登錄
AllowUsers sky # 遠程登錄時的用戶名

重啟sshd服務

sudo service ssh --full-restart

此時,我們可以在Ubuntu的Bash下連接自己測試,也可以用Windows的PowerShell連接Ubuntu來測試,命令都是一樣的

測試連接

ssh username@localhost:2222 	# username為安裝WSL Ubuntu時輸入的用戶名

如果要在其它機器上訪問,需要查找本機IP,把localhost換成IP,那么同一子網(wifi、路由器)下的機器也可訪問Ubuntu里的服務。
如果在其他機器上連接不成功看是不是Win10本地防火牆的2222端口沒有放行,放行端口方法

防火牆->高級設置->入站規則->新建規則
端口->下一步
選擇tcp 特定本地端口 2222
允許連接, 默認都選上, 下一步填個名字 完成

不出意外,就應該能連接成功了

順便提一下,如果是搭建Nginx服務就比SSH簡單多了,執行下面命令安裝后在瀏覽器訪問localhost即可:

sudo apt install nginx
sudo service nginx start


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM