使用 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 使用正常

相关推荐
2023自学中10 分钟前
imx6ull 开发板,手机,MQTT 物联网通信实验。
linux·服务器·物联网·嵌入式·开发板·应用编程
f89790707012 分钟前
把文件进行锁死,不要有写的权限。不被恶意攻击
linux
用户23678298016816 分钟前
Linux kill 命令:从信号机制到进程管理的深度解析
linux
00后程序媛28 分钟前
ubuntu安装qemu和xv6
linux·运维·ubuntu
载数而行5201 小时前
Linux操作系统 5 组管理,权限管理
linux
疯狂打码的少年1 小时前
Cache的三种映射方式(直接/全相联/组相联)
linux·服务器·数据库·笔记
minji...1 小时前
Linux 高级IO(四)多路转接之epoll,epoll 模型及原理
linux·运维·服务器·多路转接·epoll·epoll模型·红黑树/就绪队列/回调
蜡笔婧萱1 小时前
网络服务综合大实验--包含NFS服务器,Web服务器,DNS域名服务器
linux·服务器·网络
林熙蕾LXL1 小时前
守护进程&IO多路复用介绍
linux·服务器·网络
yz_aiks1 小时前
IDEA终端配置oh-my-zsh实战:安装、插件与日常使用技巧
java·ide·intellij-idea