通过tailscale配置ssh远程实现wsl系统VSCode编程

目录

一、内网穿透

整体流程概览(共 5 步)

  1. 在公司电脑上安装 WSL(Linux 环境)
  2. 在公司电脑上开启 SSH(远程登录功能)
  3. 在两台电脑上都安装 Tailscale(让家里能连上公司电脑)
  4. 在家里电脑生成"钥匙"并配对公司电脑
  5. 在家用命令连接公司电脑,进入 Linux 开发环境

第一步:在公司电脑上安装 WSL(Linux 系统)

WSL 是微软官方提供的"在 Windows 里运行 Linux"的工具。

  1. 点击左下角「开始」按钮 → 输入 PowerShell

  2. 右键「Windows PowerShell」 → 选择 "以管理员身份运行"

    • 会弹出一个黑色窗口,标题是 "Windows PowerShell(管理员)"
  3. 在黑色窗口里复制粘贴下面这行命令(直接 Ctrl+V 可能不行,右键选择"粘贴"):

    powershell 复制代码
    wsl --install -d Ubuntu-22.04
    • 按回车(Enter)执行
  4. 你会看到屏幕显示:

    复制代码
    正在安装 Ubuntu-22.04...
    这可能需要几分钟时间。
    • 电脑会自动下载并安装 Linux 系统(约 1--2 GB)
  5. 安装完成后,电脑会提示你重启

    • 点击"立即重启"或稍后手动重启
  6. 重启后,第一次启动 Ubuntu 时:

    • 会弹出一个叫 "Ubuntu-22.04" 的小窗口(黑色背景)

    • 它会问你:

      复制代码
      Enter new UNIX username: 

      👉 输入一个英文用户名(比如 xiaoming,不能有空格、中文、特殊符号,不能有大写字母
      👉 按回车

      复制代码
      New password: 

      👉 输入一个密码(比如 123456,输的时候看不到字符,正常!)
      👉 按回车

      复制代码
      Retype new password: 

      👉 再次输入同样密码,按回车

  7. 看到 $ 符号就说明成功了!

    • 比如:xiaoming@DESKTOP-XXXXXX:~$
    • 你可以关掉这个窗口,以后再用

第二步:在公司电脑上开启 SSH(允许家里远程登录)

  1. 再次以管理员身份打开 PowerShell(同上:开始菜单 → PowerShell → 右键 → 管理员)

  2. 依次执行下面三行命令(每行输完按回车):

powershell 复制代码
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

✅ 成功后会显示"已成功添加功能"

powershell 复制代码
Start-Service sshd

(没报错就是成功)

powershell 复制代码
Set-Service -Name sshd -StartupType 'Automatic'

(没报错就是成功)

  1. 验证是否开启成功:
    • Win + R 键,输入 services.msc 回车
    • 在服务列表里找到 "OpenSSH SSH Server"
    • 看它的"状态"是不是"正在运行","启动类型"是不是"自动"
      • 如果不是,右键 → 属性 → 启动类型选"自动" → 应用 → 启动

第二步完成! 公司电脑现在可以被远程登录了。


第三步:在两台电脑都安装 Tailscale(打通网络)

Tailscale 能让家里电脑"看见"公司电脑,就像它们在同一个 WiFi 下。

先在公司电脑安装:

  1. 打开浏览器,访问:https://tailscale.com/download
  2. 点击 "Windows" 下的 "Download for Windows" (会下载一个 .exe 文件)
  3. 双击运行这个文件(比如叫 Tailscale-1.xx.x.exe
  4. 安装过程一路点"下一步"即可(不需要改设置)
  5. 安装完会自动弹出一个登录页面(用 Chrome 或 Edge 打开)
  6. 注册/登录一个免费账号(似乎只支持谷歌、苹果、微软、GitHub等账号,不能用163邮箱这种)
  7. 登录成功后,你会看到一个绿色对勾 ✅,写着 "You're connected!"

稍后家里电脑也要登录同一个账号


再在家里电脑安装:

  1. 同样打开 https://tailscale.com/download
  2. 下载 Windows 版,安装(同样一路下一步)
  3. 安装完也会弹出登录页面
  4. 用和公司电脑完全相同的邮箱账号登录!
  5. 登录成功后,也看到绿色对勾 ✅

查看公司电脑的 Tailscale 地址:

  1. 在公司电脑,右下角任务栏找到 Tailscale 图标
  2. 右键它 → "Copy IP address"
    • 比如复制到的是:100.123.45.67

这个 IP 就是你家里连接公司电脑要用的地址!

第三步完成! 两台电脑现在通过 Tailscale 连在一起了。


第四步:在家里电脑生成"钥匙"(安全登录用)

我们用"钥匙"代替密码,更安全也更方便。

操作步骤(在家里电脑做):

  1. 按 Win + R,输入 cmd 回车(打开命令提示符)

  2. 在黑色窗口里输入:

    cmd 复制代码
    ssh-keygen -t rsa -b 4096
    • 按回车
  3. 它会问:

    复制代码
    Enter file in which to save the key (C:\Users\你的名字/.ssh/id_rsa):

    👉 直接按回车(用默认位置)

  4. 接着问:

    复制代码
    Enter passphrase (empty for no passphrase):

    👉 直接按回车(不要设密码,否则每次都要输)

  5. 再按一次回车确认

  6. 你会看到一堆图案(像 ASCII 艺术),最后显示:

    复制代码
    Your public key has been saved to C:\Users\你的名字\.ssh\id_rsa.pub

找到公钥文件(id_rsa.pub):

  1. 打开文件资源管理器

  2. 地址栏输入:

    复制代码
    %USERPROFILE%\.ssh
    • 按回车,会打开一个文件夹
  3. 里面有个文件叫 id_rsa.pub右键它 → "打开方式" → 用记事本打开

  4. 全选内容(Ctrl+A)→ 复制(Ctrl+C)

    • 内容看起来像:

      复制代码
      ssh-rsa AAAAB3NzaC1yc2E...(很长一串)... yourname@DESKTOP-XXXX

把"钥匙"交给公司电脑:

  1. 回到公司电脑

  2. 打开文件资源管理器,地址栏输入:

    复制代码
    %USERPROFILE%
    • 按回车,进入你的用户文件夹(比如 C:\Users\xiaoming
  3. 查看 → 勾选"隐藏的项目"(顶部菜单栏)

    • 这样才能看到 .ssh 文件夹
  4. 如果没有 .ssh 文件夹:

    • 右键空白处 → 新建 → 文件夹 → 名字输入 .ssh(注意前面有个点!)
  5. 进入 .ssh 文件夹 → 右键 → 新建 → 文本文档

    • 把文件名改成 authorized_keys(去掉 .txt 后缀!)
      • 如果提示"更改扩展名可能不可用",点"是"
  6. 用记事本打开 authorized_keys

    • 把刚才从家里复制的那整行内容粘贴进去
    • 保存(Ctrl+S)

第四步完成! 家里电脑现在可以用"钥匙"无密码登录公司电脑了。


第五步:在家里连接公司电脑,进入 Linux

操作步骤(在家里电脑):

  1. 按 Win + R,输入 cmd 回车

  2. 输入以下命令(把 100.123.45.67 替换成你之前复制的 Tailscale IP):

    cmd 复制代码
    ssh 你的Windows用户名@100.123.45.67
    • 比如你的 Windows 用户名是 xiaoming,IP 是 100.88.99.100,就输:

      cmd 复制代码
      ssh xiaoming@100.88.99.100

      终端内输 exit 或按 Ctrl+D即可断开。

  3. 第一次连接会问:

    复制代码
    The authenticity of host '...' can't be established.
    ECDSA key fingerprint is SHA256:xxxx.
    Are you sure you want to continue connecting (yes/no/[fingerprint])?

    👉 输入 yes 并回车

  4. 如果配置正确,不会让你输密码!(如果提示输密码看下一步)

    • 直接就进入了公司电脑的命令行,看到:

      复制代码
      xiaoming@DESKTOP-XXXXXX:~$
  5. 输入 wsl 并回车,进入 Linux:

    bash 复制代码
    wsl
    • 你会看到:

      复制代码
      xiaoming@DESKTOP-XXXXXX:~$

      (但这是 Linux 的提示符!)

  6. 试试看 GPU 是否可用:

    bash 复制代码
    nvidia-smi
    • 如果看到显卡信息(型号、显存、温度等),说明 GPU 可用!

第六步:提示输入密码解决方案

一开始先跟着AI做了一些权限设置,但最关键的原因在于 sshd_config 中定义了两个不同的 AuthorizedKeysFile 路径,这会干扰 SSH 查找公钥。

解决方案(在公司电脑操作)

第一步:修改 SSH 配置文件

  1. 以管理员身份打开 PowerShell

  2. 备份原配置文件:

    powershell 复制代码
    Copy-Item C:\ProgramData\ssh\sshd_config C:\ProgramData\ssh\sshd_config.backup
  3. 编辑配置文件:

    powershell 复制代码
    notepad C:\ProgramData\ssh\sshd_config

第二步:修改关键配置行

在记事本中,找到并修改以下几行:

修改前:

复制代码
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
PasswordAuthentication yes
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

修改为:只使用用户目录的公钥

复制代码
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
PasswordAuthentication no 
# 注释掉或删除下面那行
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

第三步:应用配置并重启服务

保存配置文件后,执行:

powershell 复制代码
# 重启SSH服务
Restart-Service sshd

# 验证服务状态
Get-Service sshd

第四步:测试连接

回到家里电脑,尝试连接:

cmd 复制代码
ssh -v lenovo@100.123.45.678

二、配置wsl训练环境

步骤 1:在 WSL 中安装 Miniconda(Python 环境管理器)

在 WSL 终端(你当前的 wsl 会话)中执行:

bash 复制代码
# 1. 下载Miniconda安装脚本
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

# 2. 运行安装脚本
bash Miniconda3-latest-Linux-x86_64.sh

# 你会看到:
# ➤ 显示许可证协议(按空格翻页)
# ➤ 提示 "Do you accept the license terms? [yes|no]"
#    输入:yes 回车

# 3. 选择安装位置
# ➤ 提示 "Miniconda3 will now be installed into this location:"
#    直接按回车使用默认位置:/home/你的用户名/miniconda3

# 4. 初始化Conda
# ➤ 提示 "Do you wish the installer to initialize Miniconda3?"
#    输入:yes 回车

# 5. 使配置生效
source ~/.bashrc

完成后你会看到 :命令提示符前出现 (base),表示已激活 Conda 基础环境。

步骤 2:创建专门的深度学习环境

bash 复制代码
# 1. 创建新环境(命名为dl,Python 3.10)
conda create -n rllab python=3.10 -y

# 2. 激活环境
conda activate rllab

# 你会看到:(base) 变成 (rllab)

第一次创建可能会有接受anaconda服务条款的操作,按提示操作即可。

步骤3:配置镜像源

关于conda和pip的使用优先级见 安装库是优先用conda还是pip

conda 镜像配置(在base)

bash 复制代码
# 1. 备份原配置
conda config --show channels

# 2. 添加清华镜像(替换默认源)
conda config --remove-key channels
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --set show_channel_urls yes

# 3. 可选:添加北京外国语镜像
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/conda-forge/

# 4. 验证配置
conda config --show channels

pip 镜像配置(在任何环境均可)

bash 复制代码
# 1. 创建pip配置文件
mkdir -p ~/.pip

# 2. 配置清华pip镜像
cat > ~/.pip/pip.conf << EOF
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
extra-index-url = 
    https://mirrors.aliyun.com/pypi/simple/
    https://pypi.org/simple
trusted-host = 
    pypi.tuna.tsinghua.edu.cn
    mirrors.aliyun.com
    pypi.org
timeout = 120
EOF

# 3. 验证
pip config list

步骤 4:安装 PyTorch 和常用库

bash 复制代码
# 确保在rllab环境
conda activate rllab
# 看到:(rllab) gonglab@hzh25:~$

# 安装基础科学库(conda,用清华镜像)
conda install numpy pandas matplotlib scipy jupyter ipython -y
bash 复制代码
# 安装PyTorch(根据你的CUDA版本,前面运行nvidia-smi的时候已经显示了)
# CUDA 12.x:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

# 或CUDA 11.8:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

三、配置家用电脑开发环

准备阶段:在家用电脑上安装必要软件

第1步:安装VS Code
第2步:安装Remote-SSH扩展
第3步:确认Tailscale已连接

第一次建立SSH连接(关键步骤)

第4步:在VS Code中启动连接

  1. 点击左下角绿色图标 ><(或者显示 "Open a Remote Window")
  2. 选择Connect to Host...
  3. 选择+ Add New SSH Host...

你会看到顶部弹出输入框

复制代码
Enter SSH connection command (e.g. user@host):

第5步:输入连接命令
在这里输入(替换为你的实际信息):

复制代码
lenovo@100.123.45.678
  • lenovo:你的Windows用户名(公司电脑的)
  • 100.123.45.678:你的Tailscale IP(公司电脑的)

按回车后

  1. 选择SSH配置文件位置 :选择第一个 C:\Users\你的名字\.ssh\config
  2. VS Code右下角弹出Host added!

第6步:连接主机

  1. 再次点击左下角绿色图标 ><
  2. 现在你会看到100.123.45.678 出现在列表中
  3. 点击它开始连接

第一次连接的重要提示

第7步:处理第一次连接的安全提示
你会看到弹窗

复制代码
The host's authenticity can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Are you sure you want to continue connecting?

这是正常的安全警告,因为第一次连接这台机器。

操作

  1. 点击"Continue"(不是"Cancel"!)
  2. 稍等片刻(VS Code在后台建立连接)

第8步:选择平台类型
接下来可能看到(可能没有这步):

复制代码
Select the platform of the remote host:
1. Linux
2. macOS
3. Windows

如果到目前为止都是按照前面的步骤做的,那选择Linux可能会报错,因为前面最一开始内网穿透其实是针对Windows系统配置的。但实际上我们最终需要的是Linux,因为我们要连接WSL。但是由于针对WSL的内网穿透要稍微麻烦点,所以把这一步放在后面。

这里先暂时选Windows。

第9步:输入密码(第一次需要)
重要 :这是唯一一次需要输密码!

你会看到顶部弹窗

复制代码
Enter password for lenovo@100.123.45.678:

输入 :你的Windows登录密码(公司电脑的密码)

注意

  • 输入时看不到字符,正常!
  • 输完直接按回车
  • 如果密码错误,会重新提示

第10步:等待连接完成
VS Code会

  1. 打开新窗口
  2. 左下角显示 Connecting to 100.123.45.678...
  3. 进度条走动
  4. 最终显示:SSH: 100.123.45.678

连接成功标志

  1. 左下角状态SSH: 100.123.45.678
  2. 可以打开终端查看终端 或按 Ctrl+
  3. 终端显示lenovo@hzh25 C:\Users\lenovo>

四、针对WSL系统的内网穿透

前面在公司电脑上所做的配置实际上是针对Windows系统所做的内网穿透,因此还并不能使用该电脑上的WSL系统。

针对WSL系统需要单独再做一套内网穿透。

1. 第一步:在 WSL 中安装 Tailscale 客户端

操作 :在 WSL 终端中,逐行复制粘贴以下命令并执行。

bash 复制代码
# 1. 导入Tailscale的GPG密钥和软件源(确保安装包来源可信)
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/focal.gpg | sudo apt-key add -
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/focal.list | sudo tee /etc/apt/sources.list.d/tailscale.list

执行后你应该会看到

  • 第一行命令执行后通常没有输出,或显示 OK

  • 第二行命令执行后会显示添加的软件源内容,例如:

    复制代码
    deb https://pkgs.tailscale.com/stable/ubuntu focal main

接着执行

bash 复制代码
# 2. 更新软件包列表并安装Tailscale
sudo apt-get update
sudo apt-get install tailscale -y

执行后你应该会看到

  • update 命令会滚动刷新软件源列表。
  • install 命令会显示安装进度,最后出现 Setting up tailscale (x.x.x) ... 表示安装成功。

2. 第二步:启动 Tailscale 并登录账号

操作:继续在 WSL 终端中执行。

bash 复制代码
# 3. 启动Tailscale服务
sudo systemctl start tailscaled

执行后通常没有输出,表示启动成功 。如果遇到 Failed to start tailscaled.service,不用慌,我们有一个备用方案,稍后解决。

接下来是关键步骤:登录。请执行:

bash 复制代码
# 4. 登录你的Tailscale账号(必须和Windows上的是同一个!)
sudo tailscale up

执行后你会看到

终端会显示一个超链接,格式如下:

复制代码
To authenticate, visit:
https://login.tailscale.com/a/xxxxxxxxxx
  1. 请完全复制这个链接
  2. 在你公司电脑的Windows 系统里,打开 Chrome 或 Edge 浏览器,粘贴并访问这个链接。
  3. 网页会显示你的账号,点击 "Connect""批准" 按钮。

批准成功后,WSL 终端里会自动显示连接成功信息,例如:

复制代码
Success.

3. 第三步:获取 WSL 的 Tailscale IP 并测试

操作:登录成功后,在 WSL 终端继续执行。

bash 复制代码
# 5. 查看WSL的Tailscale专属IP地址
tailscale ip

执行后你会看到

会显示 1 个或 2 个 IP 地址 ,一个是 100.x.x.x (IPv 4),一个是 fd7a:xxxx:xxxx::x (IPv 6)。

记下 100 开头的这个 IPv 4 地址 ,例如 100.123.45.789这个 IP 和你 Windows 的 Tailscale IP 不同

验证网络状态

bash 复制代码
# 6. 检查节点状态
tailscale status

你会看到类似输出,确认你的 WSL(主机名可能是 ubuntuDESKTOP-XXX)状态为 Active

复制代码
100.123.45.789  ubuntu       your-email@example.com  Linux   active

4. 为 WSL 配置 SSH 公钥登录

WSL 是一个独立的 Linux 系统 ,它有自己的用户账户和 SSH 配置。之前在 Windows 上配置的公钥(在 C:\Users\lenovo\.ssh\ 里)只对 Windows 的 SSH 服务有效。

现在需要把家里的公钥也配置到WSL 系统的 Linux 用户里。

在公司电脑上,进入 WSL 的 Ubuntu 终端,然后按以下步骤操作:

(1)在 WSL 中创建 .ssh 文件夹和授权文件
bash 复制代码
# 1. 进入你的用户主目录
cd ~

# 2. 创建 .ssh 目录并设置严格权限(非常重要!)
mkdir -p ~/.ssh
chmod 700 ~/.ssh

# 3. 创建 authorized_keys 文件并设置权限
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
(2)将家里的公钥添加到 WSL

现在需要把家里电脑 id_rsa.pub 的内容,放到 WSL 的 authorized_keys 文件里。

方法 A(推荐):如果 WSL 可以访问 Windows 文件

先把家里电脑的. ssh/id_rsa. pub 文件发送到公司电脑的下载文件夹中。

在 WSL 终端执行:

bash 复制代码
# 1. 查看你家里公钥的内容(从Windows目录读取)
cat /mnt/c/Users/lenovo/Downloads/id_rsa.pub

# 2. 将公钥内容添加到WSL的授权文件
cat /mnt/c/Users/lenovo/Downloads/id_rsa.pub >> ~/.ssh/authorized_keys

注意 :如果 Windows 用户名不是 lenovo,请替换路径中的 lenovo 为你的实际用户名。

方法 B:手动复制粘贴

  1. 家里电脑 上,用记事本打开 C:\Users\你的用户名\.ssh\id_rsa.pub,复制全部内容。

  2. 公司电脑的 WSL 终端 里,用 nano 编辑器打开授权文件:

    bash 复制代码
    nano ~/.ssh/authorized_keys
  3. 将复制的公钥内容粘贴 到 nano 编辑器中(在 WSL 终端里,通常用 Ctrl+Shift+V 或右键粘贴)。

  4. Ctrl+X 退出,按 Y 保存,再按 Enter 确认文件名。

(3)确保 WSL 的 SSH 服务已启用并运行
bash 复制代码
# 1. 确保SSH服务器已安装
sudo apt update
sudo apt install openssh-server -y

# 2. 启动SSH服务
sudo service ssh start  # 或 sudo systemctl start ssh

# 3. 检查SSH服务状态
sudo service ssh status

如果状态显示 active (running) 就对了。

总结:两个系统,两套配置

现在你拥有了两套独立的 SSH 连接

连接目标 IP 地址 用户名 公钥位置
公司 Windows 系统 100.123.45.678 lenovo (Windows 用户) C:\Users\lenovo\.ssh\authorized_keys
公司 WSL 系统 100.123.45.789 你的WSL用户名 (Linux 用户) ~/.ssh/authorized_keys (WSL 内)

5. 最终测试:从家里的电脑连接 WSL

现在,回到你家里的电脑 ,打开命令提示符,尝试用新的 WSL IP进行连接:

cmd 复制代码
ssh 你的WSL用户名@100.123.45.789

请将 你的WSL用户名 替换为你在 WSL 里创建的用户名(第一步安装 WSL 时设置的),将 100.123.45.789 替换为你刚刚记下的 IP。

如果连接成功,你会直接进入 WSL 的 Ubuntu 命令行,不再需要 Windows 密码。

6. 安装速度太慢怎么办?

安装Tailscale的时候发现下载速度极慢,哪怕根据AI的意见修改的镜像源、用了VPN还是没起色。后来还是在Windows下单独下载了.deb安装包,然后直接用安装包安装。

(1)清理缓存并重新安装

这是因为APT有断点续传和缓存机制,中断后会从缓存继续。如果之前用Ctrl+C中断了下载,可能需要彻底清理缓存,强制重新下载

在WSL终端中,依次执行以下命令:

bash 复制代码
# 1. 清理已下载的tailscale缓存包(关键!)
sudo apt-get clean
sudo rm -rf /var/lib/apt/lists/*partial/*

# 2. 再次更新软件列表(使用新源)
sudo apt-get update
(2)手动下载.deb包安装
  1. 在Windows浏览器中直接下载安装包

    • 打开Edge/Chrome,访问:

      复制代码
      https://pkgs.tailscale.com/stable/tailscale_1.94.1_amd64.deb

      (这个版本号是刚才下载时在终端信息中看到的,如需查看其他版本号可访问 https://pkgs.tailscale.com/stable/ 查看)

    • 文件会自动下载到 C:\Users\lenovo\Downloads\(你的下载目录)。

  2. 在WSL中安装此包

    回到WSL终端,执行:

    bash 复制代码
    # 进入Windows下载目录(注意:lenovo换成你的用户名)
    cd /mnt/c/Users/lenovo/Downloads/
    
    # 安装.deb包
    sudo dpkg -i tailscale_*.deb
    
    # 安装可能缺失的依赖
    sudo apt-get install -f -y

7.其他

家里电脑 SSH 连接失败?
可能原因 :WSL 内的 SSH 服务器没开。
解决:在公司电脑 WSL 内执行:

bash 复制代码
sudo apt install openssh-server -y
sudo service ssh start

然后再次尝试从家里连接。

成功后的关键点:两个独立 IP 。现在你有了两个 Tailscale IP:一个是 Windows 的(如 100.123.45.678),一个是 WSL 的(如 100.123.45.789)。远程深度学习请使用 WSL 的 IP

五、在VS Code中操作远程文件

建立ssh连接

建立ssh连接的过程和前面Windows下的基本一致。另外其实可以在家用电脑的 C:\Users\admin\.ssh\config 文件中做配置,这样之后ssh连接的名称就不用记IP了。下面是一个示例:

ssh-config 复制代码
# 公司电脑的WSL连接 (主用,用于深度学习开发)
Host company_wsl
    HostName 100.123.45.789
    User gonglab
    # Port 22 可以省略,因为22是SSH默认端口
    # IdentityFile ~/.ssh/id_rsa  # 如果密钥不是默认位置可以指定

# 公司电脑的Windows连接(备用,用于管理Windows文件或服务)
Host company_win
    HostName 100.123.45.678
    User lenovo
    # Port 22 同样可以省略

如何使用这个配置

  1. 在VS Code中连接

    • F1 打开命令面板。
    • 输入 Remote-SSH: Connect to Host... 并选择。
    • 你会看到一个下拉列表,里面就有你定义的 company_wslcompany_win 两个主机别名。
    • 选择 company_wsl 即可连接。
  2. 在命令行中连接

    • 配置好后,你无需再记IP地址。

    • 打开命令提示符或PowerShell,直接输入:

      bash 复制代码
      ssh company_wsl

      效果等同于 ssh gonglab@100.123.45.789

重要提醒:WSL的SSH服务

确保WSL内的SSH服务正在运行,这是连接成功的前提。如果之前没配置,需要在公司电脑的WSL终端中执行:

bash 复制代码
sudo apt update && sudo apt install openssh-server -y
sudo service ssh start
# 可选:设置开机自启(对于WSL,需要配置Windows任务计划,较为复杂,通常手动启动即可)

远程操作

需要注意的是在WSL中需要重新安装python等插件,对于代码也要选择对应的python解释器,否则解析不了安装的库。

打开远程文件夹,在终端中输入:

bash 复制代码
cd /mnt/d/Academic/projects
code .

下面是一个示例代码,如果能运行则意味着上述配置成功。

python 复制代码
import gymnasium as gym
import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np

# --------------------------
# 1. 定义简单的深度Q网络(DQN)
# --------------------------
class SimpleDQN(nn.Module):
    def __init__(self, state_dim, action_dim):
        super(SimpleDQN, self).__init__()
        # 极简的全连接网络,适合CartPole这种简单环境
        self.fc = nn.Sequential(
            nn.Linear(state_dim, 64),  # 输入层:状态维度→隐藏层
            nn.ReLU(),                 # 激活函数
            nn.Linear(64, action_dim)  # 输出层:隐藏层→动作维度
        )

    def forward(self, x):
        return self.fc(x)

# --------------------------
# 2. 环境初始化与参数设置
# --------------------------
# 创建CartPole环境(经典控制任务,状态维度4,动作维度2)
env = gym.make("CartPole-v1")
state_dim = env.observation_space.shape[0]  # 状态维度:4
action_dim = env.action_space.n             # 动作维度:2(左/右)

# 初始化模型、优化器和损失函数
model = SimpleDQN(state_dim, action_dim)
optimizer = optim.Adam(model.parameters(), lr=0.001)
criterion = nn.MSELoss()

# --------------------------
# 3. 极简的训练循环(仅用于环境测试)
# --------------------------
def test_training_step():
    # 重置环境,获取初始状态
    state, _ = env.reset()
    total_reward = 0
    done = False

    while not done:
        # 将状态转换为PyTorch张量(适配模型输入)
        state_tensor = torch.FloatTensor(state).unsqueeze(0)
        
        # 模型预测动作价值
        q_values = model(state_tensor)
        
        # 随机选择动作(简化版,实际DQN会用ε-贪心策略)
        action = np.random.choice(action_dim)
        
        # 执行动作,获取环境反馈
        next_state, reward, terminated, truncated, _ = env.step(action)
        done = terminated or truncated  # 任务结束标志
        total_reward += reward

        # --------------------------
        # 极简的DQN更新逻辑(仅用于测试)
        # --------------------------
        # 目标Q值(简化:直接用即时奖励)
        target_q = torch.FloatTensor([reward])
        # 当前Q值(模型预测的选中动作的价值)
        current_q = q_values.squeeze(0)[action]
        # 计算损失并更新模型
        loss = criterion(current_q, target_q)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

        # 更新状态
        state = next_state

    return total_reward

# --------------------------
# 4. 运行测试
# --------------------------
if __name__ == "__main__":
    # 打印环境和设备信息(验证配置)
    print(f"✅ 环境加载成功:CartPole-v1")
    print(f"✅ 状态维度:{state_dim},动作维度:{action_dim}")
    print(f"✅ PyTorch设备:{'GPU' if torch.cuda.is_available() else 'CPU'}")
    
    # 运行5个测试回合
    for episode in range(5):
        reward = test_training_step()
        print(f"回合 {episode+1} | 总奖励:{reward}")
    
    # 关闭环境
    env.close()
    print("\n🎉 所有测试完成!如果没有报错,说明你的DRL环境配置正常。")
相关推荐
-凌凌漆-2 小时前
vscode运行npm报错,npm : 无法加载文件 xxxxx/npm.ps1,因为在此系统上禁止运行脚本。
ide·vscode·npm
爱吃鱼的两包盐2 小时前
轻量化网络简介
人工智能·深度学习
HansenPole8253 小时前
深度学习基础知识
人工智能·深度学习
机器学习之心3 小时前
TCN-Transformer-LSTM组合模型回归+SHAP分析+新数据预测+多输出!深度学习可解释分析MATLAB代码
深度学习·lstm·transformer·shap分析·tcn-transformer
机器学习之心3 小时前
TCN-Transformer-BiLSTM组合模型回归+SHAP分析+新数据预测+多输出!深度学习可解释分析MATLAB代码
深度学习·回归·transformer·shap分析·新数据预测
渡我白衣3 小时前
从线性到非线性——神经网络的原理、训练与可解释性探索
开发语言·javascript·人工智能·深度学习·神经网络·机器学习·数字电路
Realdagongzai3 小时前
Python学习过程记录3-操作列表
linux·vscode·python·kernel
浪潮IT馆3 小时前
在 VSCode 中编写简单 JavaScript 测试用例的步骤和示例
javascript·vscode·测试用例
AndrewHZ3 小时前
【图像处理与ISP技术】图像质量评价领域经典算法一览
图像处理·人工智能·深度学习·算法·机器学习·图像质量评价·iqa