【教程】PyCharm连接Windows主机实现远程开发、跑代码(未完待续,持续更新中。。。)

1. 写在前面

因为我的台式电脑放在宿舍,所以想用工位的电脑在PyCharm远程连接宿舍的台式机进行远程开发,在折腾了一番之后写下这篇博客,希望能帮助到有需要的人。本教程适用于用PyCharm连接另一个Windows主机进行远程开发的情况。

2. 配置说明

我的工位电脑配置:Win10、PyCharm专业版 ,后面我简称它为Client;
宿舍台式机配置:Win11,后面我简称它为Server;

3. WSL安装

WSL是一个可以运行在Windows环境下的Linux子系统,因为现在PyCharm的远程开发仅支持连接运行有Linux系统的主机,而如果装双系统又相对较为麻烦,虚拟机的弊端也不再提了,综合来看,在Server上面安装WSL是一个比较好的方案。
另外,对于不是那么熟悉Linux文件管理的小伙伴来说,安装WSL可以使得我们可以像浏览、操作Windows中的文件一样去操作它们,是比较方便的,如下图
在这里插入图片描述

3.1 安装WSL 2.0

3.1.1 启用适用于 Linux 的 Windows 子系统

打开Windows Powershell并输入:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

3.1.2 检查WSL2的要求

win+R打开运行
在这里插入图片描述

然后输入winver检查windows版本,注意此版本要大于19030
在这里插入图片描述

3.1.3 启用虚拟化

以管理员身份打开Windows Powershell输入以下命令:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

3.1.4 安装自己需要的WSL分发版本

在Windows Powershell中输入以下命令查看在线可供下载的分发列表

wsl -l -o

可以看到下面是可供下载的分发列表的名称
在这里插入图片描述
在Windows Powershell中输入以下命令安装自己需要的分发版本(以Ubuntu22.04为例)

wsl --install -d Ubuntu-22.04

等待安装结束之后,会提示你设定用户名和密码,然后重启电脑即可。
此时WSL便已经安装好了,在开始菜单会有一个运行它的图标,点击即可进入
在这里插入图片描述

接着,设定wsl版本为2,还是打开Windows Powershell输入

wsl --set-default-version 2

3.2 将WSL迁出到其他盘

由于WSL默认会安装在你的系统盘中,而系统盘的资源又是相对比较珍贵的,因此有需要的小伙伴可以按照下面的步骤将它迁出到其他盘。

3.2.1 将WSL分发导出

首先,在Windows Powershell中输入以下命令查看安装的WSL分发名称。

wsl -l -v

可以看到你刚才安装的WSL的分发名称、运行状态、以及版本:
在这里插入图片描述
然后,若你的WSL状态并非Stopped,在Windows Powershell中输入以下命令(根据需要选择)将其关闭:

#关闭所有正在运行的发行版
wsl --shutdown
#关闭指定版本的WSL
wsl -t Ubuntu-22.04

接着,在Windows Powershell中输入以下命令将其导出成一个.tar文件。

wsl --export Ubuntu-22.04 directory/xxxxx.tar

其中,directory为路径,xxxxx是一个自定义的命名。

3.2.2 注销WSL分发

接下来,将要迁出的WSL分发版本进行注销,依然是打开Windows Powershell输入(这里以Ubuntu22.04为例)

wsl --unregister Ubuntu-22.04

3.2.3 将WSL分发重新导入到其他位置

注销之后,将刚才导出的.tar文件作为新的分发导入到你想要的位置,以Ubuntu22,04为例,在Windows Powershell中输入

wsl --import Ubuntu-22.04 destination directory/xxxxx.tar --version 2

注意,这里destination为你希望将WSL存放的路径,directory/xxxxx.tar为之前你导出的.tar文件的路径,注意不要搞错。
最后呢,我们设置一下这个迁出的WSL的默认用户,以Ubuntu22.04为例,依然是在Windows Powershell中输入

ubuntu2204 config --default-user username

这里username就是你前面刚安装好WSL时自己设置的用户名。

至此,就完成了WSL2.0的安装与迁出了,后面如果有需要,可以再将其迁出到其他位置。

4. 安装SSH

两台主机之间建立远程连接是需要使用SSH,因此要在Server和Client上面安装SSH。对于Server,我们要其Windows和内部的WSL中都安装SSH;而对于Client,我们直接在Windows中安装Open SSH即可。
同时,由于WSL2默认的网络模式是NAT模式,不方便和外部主机的互相访问,尤其是当Windows上的容器服务需要暴露给外部主机访问时,因此需要修改网络模式。
WSL2与外界通信需要通过宿主机进行转发,宿主机和WSL2之间存在有一个虚拟局域网,虚拟网卡WSL和虚拟网卡eth0之间由于在同一个网段,所以能够互相通信。WSL2需要访问外部网络时,需要先发往宿主机的虚拟网卡,然后由宿主机的物理网卡将请求转发出去。
因此在这一步中,我们还需要进行端口转发的设置。

4.1 Server安装SSH

4.1.1 在Server内部的WSL上安装SSH

以下在Server上的操作没有特别说明都以Ubuntu22.04为例。
首先,我们在开始菜单中找到Ubuntu的图标,打开之后,在其中输入

sudo apt-get update
sudo apt-get install openssh-server

确保SSH在运行

sudo service ssh status

在这里插入图片描述

4.1.2 在Server上安装SSH

下面在Server上安装SSH服务,首先在Windows中打开设置→应用,在搜索栏中搜索“可选”,并选择“添加可选功能”:
在这里插入图片描述
点击添加功能,在搜索栏搜索SSH,找到“Open SSH服务器”,勾选并添加,等待下载安装完成即可。
在这里插入图片描述
在这里插入图片描述

4.2 Client安装SSH

下面在Client中安装SSH服务,首先在Windows中打开设置→应用,在搜索栏中搜索“可选”,并选择“添加可选功能”:
在这里插入图片描述
点击添加功能,在搜索栏搜索SSH,找到“Open SSH客户端”,勾选并添加,等待下载安装完成即可。
在这里插入图片描述
在这里插入图片描述

5. 实现Server上WSL与Client间SSH连接的建立

其实整个教程中,这一步是最为重要的,因为使用PyCharm进行远程开发的核心在于使用SSH来建立连接,这里要求Server和Client在同一局域网,因为我在校园网中,这一条件是比较好达成的。对于其他不在同一局域网的小伙伴,可能需要考虑内网穿透看看。

5.1 在Server上对SSH进行配置

以下在Server上的操作没有特别说明都以Ubuntu22.04为例。
在Server上打开WSL,对SSL进行配置:

# 更改sshd的配置
sudo vi /etc/ssh/sshd_config

这里需要vim操作的相关知识,可以去网上搜索一下如何使用vim。

打开文件后会发现很多内容前面都有一个#,我要把需要用的内容的前面的#删除,即取消注释,并做相应的更改。
取消对应注释且更改对应设置如下:

# 端口默认是22,可以改为指定的端口,此处我们改成8989
Port 8989
ListenAddress 0.0.0.0
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

PasswordAuthentication yes
PermitRootLogin yes

重启SSH服务

# 重启ssh服务
sudo service ssh restart

5.2 在Server上设置端口转发

下面在Server上添加端口转发规则,完成将Server的端口到其内部WSL的端口的映射。

首先,打开WSL,输入以下命令获取WSL2的IP,我们将其记为WSL_IP,后面要用:

ifconfig

得到WSL的IP结果如下图,其中框起来的部分即为WSL_IP:
在这里插入图片描述
下面在Server上打开Windows Powershell,为WSL2添加端口转发规则:

# 添加端口转发规则,把WSL_IP替换成你WSL中ifconfig查找到的的IP。
netsh interface portproxy add v4tov4 listenport=8989 listenaddress=0.0.0.0 connectport=8989 connectaddress=<WSL_IP>

其中,WSL_IP即为我们刚才用ifconfig命令在WSL中获取到的WSL的IP。

# listenport=<port1> 是指其他机器连接到本机所用的端口,本文章中设置为22
# connectport=<port2> 是指本机连接到本机wsl2所用的端口,本文章中设置为8989
# 格式如下:
# netsh interface portproxy set v4tov4 listenport=<port1> connectport=<port2> connectaddress=127.0.0.1
netsh interface portproxy set v4tov4 listenport=22 connectport=8989 connectaddress=127.0.0.1

# 查看端口转发列表,检查刚刚有无设置成功
netsh interface portproxy show all

5.3 在Server上设置防火墙入站规则

这一步也可以将Server的防火墙全部关闭即可,也可以按照下面的操作来设置,依然是在Server上打开Windows Powershell输入:

# name可以自己起,localport是上一步中设置的listenport/<port1>
# 也即是其他机器连接到本机所用的端口,本文章中设置为22
netsh advfirewall firewall add rule name="WSL2" dir=in action=allow protocol=TCP localport=22

5.4 在Server上重启WSL和SSH服务

在Windows PowerShell上输入以下命令重启WSL:

wsl --shutdown
wsl

接着进入WSL重启SSH服务:

sudo service ssh restart

5.5 网络连通性检查

5.5.1 检查Server和Client之间网络的连通性

在Server上打开Windows Powershell/cmd/terminal,输入ipconfig查看当前Server的IP,记为Server_IP,后面还会用到,如下图:
在这里插入图片描述
框起来的即为Server_IP。
接下来,在Client上面打开Windows Powershell/cmd/terminal,输入以下命令来检查Client与Server之间的网络连通性:

ping <Server_IP>

在这里插入图片描述
上面表示Server与Client之间网络连通性没有问题,若出现问题则需要排查。

5.5.2 检查Server上宿主机与WSL之间网络的连通性

在Server上打开Windows Powershell输入以下命令检查其与内部WSL间网络的连通性

# 注意此处<port2>指的是sshd_config中开放的端口,即前文设置的8989
ssh <id>@<WSL_IP> -p <port2>
# 连接成功则无问题,连接失败可尝试重启甚至重装WSL2的SSH服务

5.5.3 检查Server上WSL与外部网络之间的连通性

在Server上打开WSL:

ping baidu.com

若没有问题,则网络连通性检查结束,马上就要大功告成了!

6.远程连接

在Client上面打开Windows Powershell,输入以下命令来尝试远程连接:

# id为Server中安装的WSL时设置的用户名
# SERVER_IP即为前文中在Server的Windows Powershell中输入ipconfig获得的IP
# port2即为前面在进行WSL的SSH配置时选定的端口,在本文中为8989
ssh <id>@<SERVER_IP> -p <port2>

在这里插入图片描述
下面会提示你输入密码,注意这里的密码是你在Server上安装的WSL时设置的WSL的密码。
连接成功则会出现如下的画面:
在这里插入图片描述
到此,SSH远程连接就成功了!

7.在Server的WSL上安装Anaconda

7.1 下载Anaconda

Anaconda官网下载地址
进入官网,右键点击下面适用于Linux的版本,复制链接:
在这里插入图片描述
在这里插入图片描述
在Server中进入WSL输入:

# wget后面的地址即为刚刚在官网复制的链接
wget https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh

7.2 安装Anaconda

接着,在WSl中输入以下命令进行Anaconda的安装:

bash Anaconda3-2024.06-1-Linux-x86_64.sh

在这里插入图片描述
然后会出现一系列条款许可,按住Enter一直到它滚完:
在这里插入图片描述
直到出现:
在这里插入图片描述
在箭头所指位置输入yes即可。
下面会弹出如下提示:
在这里插入图片描述
你可以根据提示来进行操作,如无特别需要可以直接按Enter继续。
接下来就等待Anaconda安装。
直到出现:
在这里插入图片描述
在这里输入yes再按Enter即可。
接着关闭WSL重新打开:
在这里插入图片描述
会发现此时前面出现了(base)这样Anaconda就安装好了!

7.3 配置Anaconda

下面我们对Anaconda做一些配置,主要是为它添加一些镜像。

8. 在PyCharm上进行远程开发

打开PyCharm,在File中选择Remote Development:
在这里插入图片描述
打开后选择SSH,点击New Connection:
在这里插入图片描述
打开后这个界面的配置注意看我下面的图里的文字,结合上下文不要填错!!!
在这里插入图片描述
下面输入密码进行验证:
在这里插入图片描述
验证成功后选择项目路径,并下载IDE即可:
在这里插入图片描述
到此就大功告成啦!撒花!

9. 参考博客

参考博客1
参考博客2
参考博客3
参考博客4

第一次写博客,谢谢能看到这里的各位小伙伴,或许会有不尽完美的地方,欢迎大家留言指出~

  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值