使用 Tailscale 实现 Ubuntu 远程开发(VSCode Remote SSH + NoMachine)

前言

我的开发环境:

复制代码
Windows 主机
↓
VSCode Remote SSH
↓
Ubuntu 开发机

Ubuntu 经常:

  • 连接手机热点

  • IP 经常变化

  • 每次都要重新查 IP

后来使用:

Tailscale

来实现:

  • 固定远程 IP

  • 任意网络远程开发

  • SSH 稳定连接

  • NoMachine 远程桌面

效果非常好。


一、Windows 安装 Tailscale

官网下载:

复制代码
https://tailscale.com/download

安装完成后:

  1. 登录自己的 Tailscale 账号

  2. 保持在线即可

登录后可以在后台看到自己的所有设备。


二、Ubuntu 安装 Tailscale

Ubuntu:

复制代码
curl -fsSL https://tailscale.com/install.sh | sh

安装完成后:

复制代码
sudo tailscale up --accept-dns=false

浏览器会弹出登录页面。

登录同一个 Tailscale 账号即可。


三、查看 Ubuntu 的固定 IP

Ubuntu:

复制代码
tailscale ip

会得到类似:

复制代码
100.x.x.x

这个 IP 基本长期固定。

以后:

  • 手机热点

  • 家里 WiFi

  • 学校网络

都不会影响远程连接。


四、Windows 使用 VSCode Remote SSH 连接 Ubuntu

Windows:

安装:

VSCode Remote SSH 插件

然后配置:

复制代码
~/.ssh/config

添加:

复制代码
Host ubuntu-dev
    HostName 100.x.x.x
    User your_username

以后直接:

复制代码
Remote-SSH: Connect to Host

即可远程开发。


五、NoMachine 远程桌面

如果需要远程 Ubuntu 桌面:

Ubuntu 安装:

复制代码
https://www.nomachine.com/

然后 Windows 也安装 NoMachine。

连接:

复制代码
100.x.x.x

即可远程桌面。

非常适合:

  • ROS

  • Gazebo

  • RViz

  • MATLAB

  • 仿真 GUI


六、重要:Ubuntu 不建议开启 Tailscale DNS 接管

Ubuntu 默认:

Tailscale 会接管系统 DNS。

这可能导致:

  • GitHub Copilot Agent 不稳定

  • VSCode Remote 偶尔异常

  • 长连接断流

尤其:

复制代码
Ubuntu + VSCode Remote SSH + Copilot

场景下。

因此推荐:

复制代码
sudo tailscale up --accept-dns=false

这样:

  • Tailscale 仍正常工作

  • 固定 IP 保留

  • SSH 正常

  • NoMachine 正常

  • Copilot 更稳定

这是目前 Linux 远程开发中比较稳定的做法。


七、常用命令

查看 Tailscale 状态

复制代码
tailscale status

查看 Tailscale IP

复制代码
tailscale ip

停止Tailscale

复制代码
sudo systemctl stop tailscaled
sudo systemctl disable tailscaled
sudo tailscale down

重新启动(不接管 DNS)

复制代码
sudo tailscale up --accept-dns=false

八、最终效果

最终开发架构:

复制代码
Windows
├── VSCode
├── Remote SSH
├── GitHub Copilot
└── NoMachine

        ↓ Tailscale

Ubuntu
├── SSH
├── Tailscale
├── Docker
├── ROS
├── AI开发环境
└── 仿真系统

特点:

  • 不需要同一 WiFi

  • 不需要查 IP

  • 手机热点也能远程开发

  • 固定远程 IP

  • VSCode Remote SSH 稳定

  • Copilot 使用正常

相关推荐
水饺编程7 小时前
第2章:Linux 基础,切换到超级用户
linux·c语言·汇编
便利店10247 小时前
系统活动一抓留存!深入 Linux C/C++ 调试工具之 sysdig
linux·运维·服务器·sysdig
qetfw8 小时前
Bash 变量:export、位置参数与默认值展开验证
linux·开发语言·chrome·bash
其实防守也摸鱼8 小时前
Cylab在线靶场——CTF中的通用技能
linux·数据库·学习·算法·靶场·ctf·学习网络安全
toooooop89 小时前
CentOS 7 内核 3.10.0-1160.119.1 升级指南
linux·运维·centos
码少女9 小时前
Linux——UDP协议和TCP协议
linux·网络·udp·tcp
GeW9 小时前
新质生产力发展路线图Linux、数据库、AI 一个都不能少
linux
kkkkkkkkkk_Z9 小时前
新手自学嵌入式 | 学习日记:Linux驱动复习之系统移植(U-Boot篇)
linux·运维·学习
Rabitebla9 小时前
【系统性学习笔记】Linux 权限篇(二):文件属性、权限修改与目录权限的底层逻辑
linux·c++·笔记·学习·算法
Lsetea11 小时前
curl下载HTTPS文件报23:证书验证成功与本地写入失败分层排查
linux·https·shell·ssl证书·curl