使用ssh连接远程计算机WSL2最简单的方法,无需设置端口转发!

本方案参考自https://www.hanselman.com/blog/the-easy-way-how-to-ssh-into-bash-and-wsl2-on-windows-10-from-an-external-machine

 注意,该解决方案针对的场景是使用ssh连接网络上其他计算机的WSL2(以下称WSL),并非本机自身的WSL。

目前网上很多的方案都是首先在WSL中启动SSH服务,然后再在WSL所在的计算机(宿主机)上配置转发规则达到远程计算机可以连接的目的,这么做的原因也很明确,因为WSL的网络是与宿主机相连的一个虚拟网络,不能跟外界直接联通。

但是,从Windows10开始,系统自身就已经可以安装SSH服务了。所以远程计算机早就可以使用SSH直接连接Windows了。只不过,目前Windows默认连接以后是使用PowerShell作为shell工具。所以,如果把Windows直接作为SSH Server,把SSH 默认提供的PowerShell 替换成WSL2的Bash就能更加简便的解决远程连接WSL的问题,以下是实现步骤:

在WSL2所在的计算机上Windows环境以管理员身份进入PowerShell, 查看OpenSSH Server是否被安装, 通过执行Get-WindowsCapability命令查看:

> Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

Name  : OpenSSH.Client~~~~0.0.1.0
State : Installed

Name  : OpenSSH.Server~~~~0.0.1.0
State : NotPresent

如果OpenSSH.Server显示没有安装(NotPresent)则执行安装命令:

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

安装完成后,启动sshd 服务,可以手动启动也可也设置成自动启动:

# 手动启动
Start-Service sshd
# 设置成自动启动
Set-Service -Name sshd -StartupType 'Automatic'
# 查看服务状态
Get-Service sshd

然后使用命令替换掉ssh服务默认的Shell:

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\WINDOWS\System32\bash.exe" -PropertyType String -Force

如此以来,就可以使用ssh直接远程连接这台计算机了,用户名密码登录成功后直接进入WSL2的bash界面。

注意!由于这里是直接连接Windows下的SSH Server,所以ssh使用的用户名和密码也是windows的用户名和密码。

  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Windows Subsystem for Linux 2(WSL2)是Windows 10操作系统中的一个功能,它允许用户在Windows中运行Linux操作系统。对于那些熟悉Linux的开发人员来说,WSL2是一种非常方便的方式来使用他们所熟悉的命令行界面和工具。 在WSL2中,用户可以使用多种方法进行远程访问。其中,其中之一是通过ssh远程登录。 SSH(Secure Shell)是一种安全的网络协议,允许用户在不安全的网络上进行加密通信。通过ssh远程登录WSL2,用户可以像在本地一样使用WSL2,同时还可以利用Windows的GUI界面。 要使用ssh远程登录WSL2,用户需要先启用ssh服务器。在Windows PowerShell或命令提示符中,可以使用以下命令来启动ssh服务器: ``` sudo apt update sudo apt install openssh-server sudo service ssh start ``` 安装和启动过程完成后,可以使用ssh客户端连接WSL2。在本地电脑上,打开一个终端窗口并输入以下命令: ``` ssh [username]@[IP address of WSL2] ``` 其中,[username]是WSL2中的用户名,[IP address of WSL2]是WSL2的IP地址。默认情况下,WSL2会动态分配IP地址,可以使用以下命令在WSL2中查找其IP地址: ``` ip addr show eth0 | grep inet | awk '{print $2}' | cut -d / -f 1 ``` 使用这种方法进行远程访问,需要确保WSL2和Windows的防火墙设置正确。在Windows防火墙中,需要允许ssh流量通过。在WSL2中,需要允许ssh服务器通过WSL2的防火墙。可以使用以下命令配置WSL2防火墙: ``` sudo ufw allow ssh ``` 使用ssh远程登录WSL2时,还需要注意ssh客户端和服务端之间的证书问题。如果出现证书错误,需要检查证书是否正确配置。 总之,使用ssh远程登录WSL2是一种方便的方式,可让用户像在本地一样使用WSL2。通过配置Windows和WSL2的防火墙,并确保证书正确配置,用户可以安全、可靠地进行远程访问。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值