wsl---ssh远程连接、ip映射及服务自启详细配置

在初步体验了wsl后,我们都想通过一些类似xshell的工具来进行连接,因为cmd真的是不太友好。

在多次反复操作后,才发现,网上很多千篇一律的教程在有些地方,真的是误导像我这种小白,因此,本片文章经历过多次修改以保让我等小白不被带偏。

开篇

我们都知道,wsl安装完成后,通过命令行输入wsl即可进入系统,但是Windows cmd窗口真的不太友好,那么,我们有没有办法通过xshell等sshclient工具来进行连接进行操作呢?那么,本篇我们一起来学习一下吧。

那么,这里我们一般有2种方式来建立ssh连接。

ssh client连接

(一)生成密匙

这里需要注意的是,如果wsl不存在ssh服务,则直接跳到第二种方式进行操作,如果存在,建议先执行该种方式进行体验,若不成功,则再跳到第二种方式将会更明白个中道理。

一般wsl自带ssh服务,首先我们启动服务

service ssh restart

此时可能报错

sshd: no hostkeys available -- exiting.

这里可能有2种原因,一是当前用户非root用户,此时切换到root用户执行即可,二是可能缺少密匙文件,可进入/etc/ssh查看是否存在下图中2个文件,若不存在,执行以下命令生成即可。

$ sudo ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
$ sudo ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

服务启动成功后,通过命令行以下方式进行连接

ssh jack@localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established.
RSA key fingerprint is SHA256:IE0uKLebsAS9/FbuQEHq8sCkauJUwkj0hDlpAhtn0C0.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

即可登录,但这里是使用密匙登录,要想通过账号密码登录,则需要修改配置文件。

修改完配置文件后,通过

ssh jack@172.21.73.52
jack@172.21.73.52's password:

输入密码即可登录。

这里需要注意的是,这里既可以通过local host也可以通过ip来进行访问,并不像其他教程里所说的一样需要进行端口转发,端口转发并不是用在这种情况下的,后面会讲解。

(二)删除并重新安装sshopen-server

这种方法网上随处可见,为了全面,我这里也记录一下,基本上分为以下几步。

1.卸载openssh-server

apt remove openssh-server

2.安装openssh-server

apt install openssh-server

3.修改配置文件

# 编辑/etc/ssh/sshd_config文件。
vi /etc/ssh/sshd_config
  • 修改ip和port

        

  • 修改允许root访问

        

  • 修改允许用户名密码登录

        

4.重启

sudo service ssh restart

此时即可通过ssh进行连接或通过xshell等工具进行连接

(三)完成以上连接后,是否可以通过其他电脑来访问wsl?

毫无疑问是可以的!!!那么这步我们就需要配置防火墙出入站规则以及端口转发规则了

如果防火墙开启,那我们需要配置防火墙规则同时需要配置端口转发规则

1.配置端口转发规则

意思就是,访问到物理机的2222端口的请求,转发到wsl的2222端口,IP为wsl的ip

netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=2222 connectaddress=[IP] connectport=[PORT]

2.配置防火墙出入站规则

这是安全规则,如果防火墙关闭的话则不用配置,

netsh advfirewall firewall add rule name=WSL2 dir=in action=allow protocol=TCP localport=2222

配置完以上两步后,我们则可以通过外网来访问我们的wsl

(例如,本机ip是1.2.3.4,wsl地址是172.16.12.1)

那么,远程访问时,通过

ssh jack@1.2.3.4 -p 2222

即可连接到wsl。

网上说,要连接到wsl时,wsl必须保持打开状态,也就是命令行窗口不能关闭,其实这是一个误区!!!

经过验证,即使所有的命令行都关闭,只要wsl不是shutdown状态,ssh服务正常开启,那么就可以通过ssh进行连接!!!

其实,通过这一步可以自由的配置本地端口与wsl端口的映射,也就是可以通过物理机来进行网站或应用程序的访问,比如,我们再wsl部署一个网站,我们可以直接将该网站的端口xxxx映射到物理机的8080(举例),那么我们通过本机ip:8080即可访问该网站,大大提高我们的易操作性。

但是不是到这里就万事大吉了呢?并不是,因为wsl每次重启,ip地址都会变化,也就是说通过以上步骤添加的映射规则再wsl重启后就失效了!【刚开始不知道,第一次配置好wsl后,第二天来开机就懵逼了,一通瞎操作才整明白】,所以,我们还的想办法来固定wsl的ip地址,以保证规则永久有效。

 

wsl “固定IP”配置

 

(四)固定wsl ip地址

其实这种说法并不准确,因为严格意义上,固定wsl ip实现相当复杂,我们一般都是通过变相的操作来达到相同的目的。

这个方法就是,wsl启动时,读取ip并将ip以及域名写入到Windows的hosts文件中,这样以来,我们映射规则中的IP就可以用域名来代替。

说干就干,我们来看一下具体步骤。

这里一种方法是,再wsl启动后,给他分配一个与机器同网段的ip,参考<<WSL2固定ip地址>>

另一种则是动态获取wslIP并写入hosts文件,这里主要说第二种

1.首先,下载wsl2host.exe ,地址 https://github.com/shayne/go-wsl2-host/releases

这里附上我下载后上传的地址,因为GitHub实在太慢了。https://wwa.lanzoui.com/iZaIJp49rxi

2.管理员运行cmd,然后切换到wsl2host.exe目录下,执行

>wsl2host.exe install
Windows Username: xxx
Windows Password:xxx

若不报错,则证明安装成功,打开服务,查找wsl2host查看状态,若为停止,手动启动

若启动失败,则打开本地组策略,进行如下设置

此时即可启动服务成功,打开C:\Windows\System32\drivers\etc\hosts,可以查看到

证明添加成功,之后,我们就再也不用担心wsl重启导致的IP变动问题了。

如果是家庭版win10,那么可以

@echo off
 
pushd "%~dp0"
 
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt
 
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >>List.txt
 
for /f %%i in ('findstr /i . List.txt 2^>nul') do dism /online /norestart /add-package:"C:\Windows\servicing\Packages\%%i"
 
pause

复制以上内容到一个文本***.bat中,使用管理员运行即可。

经测试,当wsl --shutdown时,hosts文件中wsl域名行会消失,当wsl启动时,会自动添加。

 

=========================

 

(五)ssh自启动设置

其实还有一个问题,就是ssh自启动的问题,因为每次wsl重启后都要手动启动ssh,导致很多不便,我们这里也说以下。

看过网上的很多教程,都是老教程而且还不易操作,这里给出我总结的简易方法,请参考

wsl服务自启动简易配置需要的参照设置即可。

 

码字不易,还望支持!有什么问题和疑问,欢迎交流。

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 在WSL2中安装VSCode扩展程序"ms-vscode-remote.remote-ssh"可以让我们在WSL2环境中使用SSH远程连接功能。以下是安装步骤: 1. 首先,确保已在WSL2环境中安装了VSCode。可以通过在WSL2终端中运行以下命令来安装VSCode: ``` sudo apt-get update sudo apt-get install code ``` 2. 打开VSCode,点击左侧的"扩展"图标(或按下Ctrl + Shift + X快捷键),在搜索框中输入"ms-vscode-remote.remote-ssh"。 3. 在搜索结果中,找到"Remote - SSH"扩展,并点击"安装"按钮进行安装。 4. 安装完成后,点击"重新加载"按钮来激活扩展。 5. 安装完成后,可以在VSCode底部状态栏找到一个小飞机图标。点击该图标,选择"Remote-SSH: Connect to Host...",然后选择"Configure SSH Hosts"。 6. 在打开的"~/.ssh/config"文件中,添加SSH连接配置信息。例如,对于连接到远程主机的情况,可以添加以下配置: ``` Host <host_name> HostName <host_ip_address> User <username> IdentityFile <path_to_private_key> ``` 其中,<host_name>是主机名称,<host_ip_address>是主机IP地址,<username>是登录用户名,<path_to_private_key>是SSH私钥文件的路径。 7. 保存并关闭配置文件后,再次点击底部状态栏中的小飞机图标,选择刚添加的主机配置。 8. 若SSH连接成功,将会在VSCode中打开一个新的窗口,并显示在远程主机中的文件和文件夹。 通过按照以上步骤,在WSL2中安装VSCode扩展程序"ms-vscode-remote.remote-ssh",我们就可以轻松地使用SSH远程连接功能了。这使得在WSL2环境中开发和管理远程主机变得更加方便和高效。 ### 回答2: 在WSL2环境中安装VS Code的远程SSH扩展(extension/ms-vscode-remote.remote-ssh),可以让我们在本地的Windows系统上使用VS Code远程连接Linux服务器进行开发和调试。 首先,我们需要确保已经在WSL2中安装了VS Code。可以通过在WSL2的Linux终端中运行以下命令来安装VS Code: ``` $ sudo apt update $ sudo apt install code ``` 安装完成后,再按照以下步骤安装远程SSH扩展: 1. 在WSL2中打开VS Code。 2. 点击左侧的扩展按钮(四个方块图标)。 3. 在搜索框中输入“remote-ssh”。 4. 在搜索结果中找到“Remote - SSH”扩展,点击安装。 5. 安装完成后,点击右下角的重新加载按钮。 安装完成后,我们就可以通过远程SSH连接到Linux服务器了。点击VS Code左下角的“远程窗口”图标,选择“连接到主机&hellip;”。输入服务器的SSH地址、端口号和用户名,点击连接。 进入了远程连接后,我们可以在本地的VS Code中进行编辑、调试等操作。所有文件和操作都会直接在Linux服务器上进行,增加了开发和调试的便利性。 需要注意的是,在安装和使用远程SSH扩展时,确保WSL2和Linux服务器之间能够正常通信,且在服务器上已经安装和启动了SSH服务。这样,我们才能顺利地在WSL2环境中使用VS Code的远程SSH扩展。 ### 回答3: 在WSL 2中安装VSCode的Remote SSH插件(extension/ms-vscode-remote.remote-ssh)可以实现远程SSH连接到其他服务器,非常方便进行开发和调试工作。 首先确保已经在WSL 2上安装了VSCode。打开VSCode,点击左侧侧边栏的扩展按钮(插件图标),搜索并找到"Remote - SSH"插件,并点击"安装"按钮进行安装。 插件安装完成后,点击VSCode下方的绿色图标选择一个状态栏的地方,然后选择"Remote-SSH:Connect to Host..."。 在弹出的输入框中,输入SSH连接的目标服务器地址,例如"username@192.168.0.1",然后按Enter键。 接下来,需要输入您的SSH密码或者私钥密码进行身份验证。验证成功后,VSCode将会建立与目标服务器的SSH连接,并打开连接后的终端。 在终端中,您可以执行各种命令和操作,与目标服务器进行交互。 安装成功后,您可以再次点击左侧的侧边栏扩展按钮,在搜索栏中输入"Remote - SSH",然后找到并点击安装"Remote - SSH: Editing Configuration Files"插件。这个插件可以在VSCode中轻松编辑SSH配置文件,以便更方便地管理和连接到多个远程服务器。 总而言之,通过以上步骤,就可以在WSL 2中安装并使用VSCode的Remote SSH插件了。这个插件极大地扩展了VSCode在开发和调试方面的功能,能够轻松连接到远程服务器进行开发工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值