<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tailscale on XEDCZQ的博客</title><link>https://xedczq.cn/tags/tailscale/</link><description>Recent content in Tailscale on XEDCZQ的博客</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Thu, 16 Jul 2026 10:00:00 +0800</lastBuildDate><atom:link href="https://xedczq.cn/tags/tailscale/index.xml" rel="self" type="application/rss+xml"/><item><title>通过 Tailscale 连接服务器：解决校园网无法 SSH 的问题</title><link>https://xedczq.cn/post/tailscale_ssh_campusnetwork/</link><pubDate>Thu, 16 Jul 2026 10:00:00 +0800</pubDate><guid>https://xedczq.cn/post/tailscale_ssh_campusnetwork/</guid><description>&lt;h1 id="通过-tailscale-连接服务器解决校园网无法-ssh-的问题"&gt;&lt;a href="#%e9%80%9a%e8%bf%87-tailscale-%e8%bf%9e%e6%8e%a5%e6%9c%8d%e5%8a%a1%e5%99%a8%e8%a7%a3%e5%86%b3%e6%a0%a1%e5%9b%ad%e7%bd%91%e6%97%a0%e6%b3%95-ssh-%e7%9a%84%e9%97%ae%e9%a2%98" class="header-anchor"&gt;&lt;/a&gt;通过 Tailscale 连接服务器：解决校园网无法 SSH 的问题
&lt;/h1&gt;&lt;p&gt;这篇记录一个很实用的问题：在校园网环境下，直接 SSH 连接云服务器可能失败，但服务器本身并没有坏，SSH 配置也没有问题。&lt;/p&gt;
&lt;p&gt;常见现象是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在家里、手机热点、公司网络下可以正常 SSH&lt;/li&gt;
&lt;li&gt;换到校园网后，&lt;code&gt;ssh user@server-ip&lt;/code&gt; 连接超时&lt;/li&gt;
&lt;li&gt;云服务器安全组、端口、密钥都检查过，依然连不上&lt;/li&gt;
&lt;li&gt;网站可能能打开，但 SSH 的 22 端口就是不稳定&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种情况下，可以用 Tailscale 把本地电脑和服务器放进同一个私有网络。之后 SSH 不再走服务器公网 IP，而是走 Tailscale 分配的内网 IP 或设备名。&lt;/p&gt;
&lt;p&gt;文中所有 IP、用户名、密钥路径都使用占位符，不包含真实服务器信息。&lt;/p&gt;
&lt;h2 id="一为什么校园网会影响-ssh"&gt;&lt;a href="#%e4%b8%80%e4%b8%ba%e4%bb%80%e4%b9%88%e6%a0%a1%e5%9b%ad%e7%bd%91%e4%bc%9a%e5%bd%b1%e5%93%8d-ssh" class="header-anchor"&gt;&lt;/a&gt;一、为什么校园网会影响 SSH
&lt;/h2&gt;&lt;p&gt;SSH 默认使用 22 端口。部分校园网、公共网络或企业网络可能会对出站端口做限制。&lt;/p&gt;
&lt;p&gt;可能的表现包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;直接阻断 22 端口&lt;/li&gt;
&lt;li&gt;对长连接不友好&lt;/li&gt;
&lt;li&gt;NAT 或防火墙策略导致连接不稳定&lt;/li&gt;
&lt;li&gt;某些云服务器 IP 段访问质量较差&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这时即使服务器本身是正常的，本地也可能连不上：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh your-user@your-server-public-ip
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;可能会卡住，最后报：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Operation timed out
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;或者：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Connection timed out
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Tailscale 的思路是：让你的本地电脑和云服务器加入同一个 tailnet，形成一个基于 WireGuard 的私有网络。之后你连接的是 Tailscale 网络里的地址，而不是直接访问公网 SSH 入口。&lt;/p&gt;
&lt;h2 id="二整体方案"&gt;&lt;a href="#%e4%ba%8c%e6%95%b4%e4%bd%93%e6%96%b9%e6%a1%88" class="header-anchor"&gt;&lt;/a&gt;二、整体方案
&lt;/h2&gt;&lt;p&gt;最终目标是这样的：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;本地电脑 -- Tailscale 私有网络 -- 云服务器
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;连接方式从：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh -i ~/.ssh/your-key your-user@your-server-public-ip
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;变成：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh -i ~/.ssh/your-key your-user@your-server-tailscale-ip
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;或者更方便：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh your-server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这里的 &lt;code&gt;your-server&lt;/code&gt; 是自己在 &lt;code&gt;~/.ssh/config&lt;/code&gt; 中配置的别名。&lt;/p&gt;
&lt;h2 id="三准备条件"&gt;&lt;a href="#%e4%b8%89%e5%87%86%e5%a4%87%e6%9d%a1%e4%bb%b6" class="header-anchor"&gt;&lt;/a&gt;三、准备条件
&lt;/h2&gt;&lt;p&gt;你需要准备：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;项目&lt;/th&gt;
 &lt;th&gt;示例占位符&lt;/th&gt;
 &lt;th&gt;说明&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;本地电脑&lt;/td&gt;
 &lt;td&gt;Mac / Windows / Linux&lt;/td&gt;
 &lt;td&gt;安装 Tailscale 客户端&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;云服务器&lt;/td&gt;
 &lt;td&gt;Linux 服务器&lt;/td&gt;
 &lt;td&gt;安装 Tailscale 服务端客户端&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Tailscale 账号&lt;/td&gt;
 &lt;td&gt;GitHub / Google / Microsoft 等&lt;/td&gt;
 &lt;td&gt;用同一个账号登录&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;SSH 用户&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;your-user&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;例如普通用户或 &lt;code&gt;root&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;SSH 私钥&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;~/.ssh/your-key&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;如果使用密钥登录&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;官方文档：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://tailscale.com/docs/install/linux" target="_blank" rel="noopener"
 &gt;Tailscale Linux 安装文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://tailscale.com/docs/features/magicdns" target="_blank" rel="noopener"
 &gt;Tailscale MagicDNS 文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://tailscale.com/docs/features/tailscale-ssh" target="_blank" rel="noopener"
 &gt;Tailscale SSH 文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="四在本地电脑安装-tailscale"&gt;&lt;a href="#%e5%9b%9b%e5%9c%a8%e6%9c%ac%e5%9c%b0%e7%94%b5%e8%84%91%e5%ae%89%e8%a3%85-tailscale" class="header-anchor"&gt;&lt;/a&gt;四、在本地电脑安装 Tailscale
&lt;/h2&gt;&lt;h3 id="mac"&gt;&lt;a href="#mac" class="header-anchor"&gt;&lt;/a&gt;Mac
&lt;/h3&gt;&lt;p&gt;可以从官网下载并安装：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;https://tailscale.com/download
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装完成后，登录自己的 Tailscale 账号。&lt;/p&gt;
&lt;p&gt;也可以用 Homebrew：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install --cask tailscale
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后打开 Tailscale App 登录。&lt;/p&gt;
&lt;h3 id="windows"&gt;&lt;a href="#windows" class="header-anchor"&gt;&lt;/a&gt;Windows
&lt;/h3&gt;&lt;p&gt;从官网下载 Windows 安装包：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;https://tailscale.com/download
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装后登录同一个 Tailscale 账号。&lt;/p&gt;
&lt;h3 id="linux-本地电脑"&gt;&lt;a href="#linux-%e6%9c%ac%e5%9c%b0%e7%94%b5%e8%84%91" class="header-anchor"&gt;&lt;/a&gt;Linux 本地电脑
&lt;/h3&gt;&lt;p&gt;Linux 可以使用官方安装脚本：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://tailscale.com/install.sh &lt;span class="p"&gt;|&lt;/span&gt; sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后登录：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo tailscale up
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;浏览器会打开认证页面，登录后这台电脑就加入 tailnet 了。&lt;/p&gt;
&lt;h2 id="五在云服务器安装-tailscale"&gt;&lt;a href="#%e4%ba%94%e5%9c%a8%e4%ba%91%e6%9c%8d%e5%8a%a1%e5%99%a8%e5%ae%89%e8%a3%85-tailscale" class="header-anchor"&gt;&lt;/a&gt;五、在云服务器安装 Tailscale
&lt;/h2&gt;&lt;p&gt;先通过能连接服务器的网络进入服务器。例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;手机热点&lt;/li&gt;
&lt;li&gt;家里网络&lt;/li&gt;
&lt;li&gt;云厂商网页控制台&lt;/li&gt;
&lt;li&gt;云服务器的 VNC / Web Shell&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;进入服务器后安装 Tailscale：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://tailscale.com/install.sh &lt;span class="p"&gt;|&lt;/span&gt; sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;启动并登录：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo tailscale up
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;终端会输出一个登录链接。复制链接到浏览器，使用和本地电脑相同的 Tailscale 账号登录。&lt;/p&gt;
&lt;p&gt;登录完成后，服务器也会加入同一个 tailnet。&lt;/p&gt;
&lt;h2 id="六查看-tailscale-ip"&gt;&lt;a href="#%e5%85%ad%e6%9f%a5%e7%9c%8b-tailscale-ip" class="header-anchor"&gt;&lt;/a&gt;六、查看 Tailscale IP
&lt;/h2&gt;&lt;p&gt;在服务器上执行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tailscale ip -4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;会输出一个类似下面的地址：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;100.x.y.z
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个 &lt;code&gt;100.x.y.z&lt;/code&gt; 就是服务器在 Tailscale 私有网络里的 IP。&lt;/p&gt;
&lt;p&gt;在本地电脑也可以查看当前 tailnet 里的设备：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tailscale status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;你会看到类似：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;100.x.y.z your-server your-account linux
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;100.a.b.c your-laptop your-account macOS
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;只要两台设备都在列表里，就说明它们已经在同一个 Tailscale 网络中了。&lt;/p&gt;
&lt;h2 id="七通过-tailscale-ip-连接服务器"&gt;&lt;a href="#%e4%b8%83%e9%80%9a%e8%bf%87-tailscale-ip-%e8%bf%9e%e6%8e%a5%e6%9c%8d%e5%8a%a1%e5%99%a8" class="header-anchor"&gt;&lt;/a&gt;七、通过 Tailscale IP 连接服务器
&lt;/h2&gt;&lt;p&gt;现在不要再用公网 IP 连接，而是改用 Tailscale IP：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh -i ~/.ssh/your-key your-user@100.x.y.z
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果你的服务器 SSH 端口不是 22，需要加 &lt;code&gt;-p&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh -i ~/.ssh/your-key -p your-ssh-port your-user@100.x.y.z
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;连接成功后，说明 SSH 已经绕过校园网对公网 SSH 的限制，改走 Tailscale 私有网络了。&lt;/p&gt;
&lt;h2 id="八使用-magicdns用设备名代替-ip"&gt;&lt;a href="#%e5%85%ab%e4%bd%bf%e7%94%a8-magicdns%e7%94%a8%e8%ae%be%e5%a4%87%e5%90%8d%e4%bb%a3%e6%9b%bf-ip" class="header-anchor"&gt;&lt;/a&gt;八、使用 MagicDNS：用设备名代替 IP
&lt;/h2&gt;&lt;p&gt;Tailscale 支持 MagicDNS。开启后，可以直接用设备名连接，不用记 &lt;code&gt;100.x.y.z&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;例如服务器设备名是 &lt;code&gt;your-server&lt;/code&gt;，可以尝试：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh -i ~/.ssh/your-key your-user@your-server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果设备名冲突或解析失败，可以回到 Tailscale 管理后台查看设备名称。&lt;/p&gt;
&lt;p&gt;MagicDNS 的好处是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不用记 Tailscale IP&lt;/li&gt;
&lt;li&gt;服务器 Tailscale IP 变化时影响更小&lt;/li&gt;
&lt;li&gt;命令更短，更适合日常使用&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="九配置-ssh-config让连接更短"&gt;&lt;a href="#%e4%b9%9d%e9%85%8d%e7%bd%ae-ssh-config%e8%ae%a9%e8%bf%9e%e6%8e%a5%e6%9b%b4%e7%9f%ad" class="header-anchor"&gt;&lt;/a&gt;九、配置 SSH Config，让连接更短
&lt;/h2&gt;&lt;p&gt;推荐把连接信息写进本地 &lt;code&gt;~/.ssh/config&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;打开文件：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nano ~/.ssh/config
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;加入：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Host your-server
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; HostName 100.x.y.z
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; User your-user
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Port 22
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; IdentityFile ~/.ssh/your-key
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ServerAliveInterval 60
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ServerAliveCountMax 3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;保存后，连接命令变成：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh your-server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果你启用了 MagicDNS，也可以把 &lt;code&gt;HostName&lt;/code&gt; 写成设备名：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Host your-server
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; HostName your-server
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; User your-user
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Port 22
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; IdentityFile ~/.ssh/your-key
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ServerAliveInterval 60
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ServerAliveCountMax 3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;不过我更喜欢第一种：&lt;code&gt;Host&lt;/code&gt; 用短别名，&lt;code&gt;HostName&lt;/code&gt; 写明确的 Tailscale IP。这样排查问题时更直观。&lt;/p&gt;
&lt;h2 id="十在-codex-中使用"&gt;&lt;a href="#%e5%8d%81%e5%9c%a8-codex-%e4%b8%ad%e4%bd%bf%e7%94%a8" class="header-anchor"&gt;&lt;/a&gt;十、在 Codex 中使用
&lt;/h2&gt;&lt;p&gt;配置好 SSH 别名后，Codex 里可以直接让它执行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh your-server &lt;span class="s2"&gt;&amp;#34;pwd&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;查看服务器目录：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh your-server &lt;span class="s2"&gt;&amp;#34;ls -lah&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;查看磁盘：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh your-server &lt;span class="s2"&gt;&amp;#34;df -h&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;查看内存：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh your-server &lt;span class="s2"&gt;&amp;#34;free -h&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;查看服务状态：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh your-server &lt;span class="s2"&gt;&amp;#34;systemctl status nginx&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这样 Codex 不需要知道你的公网 IP，只需要知道本地 SSH 别名即可。&lt;/p&gt;
&lt;h2 id="十一普通-ssh-over-tailscale-和-tailscale-ssh-的区别"&gt;&lt;a href="#%e5%8d%81%e4%b8%80%e6%99%ae%e9%80%9a-ssh-over-tailscale-%e5%92%8c-tailscale-ssh-%e7%9a%84%e5%8c%ba%e5%88%ab" class="header-anchor"&gt;&lt;/a&gt;十一、普通 SSH over Tailscale 和 Tailscale SSH 的区别
&lt;/h2&gt;&lt;p&gt;这里容易混淆，简单区分一下。&lt;/p&gt;
&lt;h3 id="普通-ssh-over-tailscale"&gt;&lt;a href="#%e6%99%ae%e9%80%9a-ssh-over-tailscale" class="header-anchor"&gt;&lt;/a&gt;普通 SSH over Tailscale
&lt;/h3&gt;&lt;p&gt;命令类似：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh -i ~/.ssh/your-key your-user@100.x.y.z
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;仍然使用服务器上的 OpenSSH&lt;/li&gt;
&lt;li&gt;仍然使用原来的 Linux 用户和 SSH 密钥&lt;/li&gt;
&lt;li&gt;只是网络路径从公网变成了 Tailscale 私有网络&lt;/li&gt;
&lt;li&gt;对个人服务器来说最直观，也最容易理解&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="tailscale-ssh"&gt;&lt;a href="#tailscale-ssh" class="header-anchor"&gt;&lt;/a&gt;Tailscale SSH
&lt;/h3&gt;&lt;p&gt;Tailscale 也提供自己的 SSH 能力，可以让 Tailscale 接管 tailnet 内的 SSH 认证与授权。&lt;/p&gt;
&lt;p&gt;服务器上可以启用：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo tailscale &lt;span class="nb"&gt;set&lt;/span&gt; --ssh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后配合 Tailscale 管理后台的访问控制规则使用。&lt;/p&gt;
&lt;p&gt;它的好处是可以把 SSH 权限和 Tailscale 身份绑定起来，适合多人团队、统一权限管理、减少手动维护 SSH key 的场景。&lt;/p&gt;
&lt;p&gt;如果只是自己连接自己的服务器，我更建议先用“普通 SSH over Tailscale”。它和传统 SSH 习惯一致，排查也简单。&lt;/p&gt;
&lt;h2 id="十二建议的安全设置"&gt;&lt;a href="#%e5%8d%81%e4%ba%8c%e5%bb%ba%e8%ae%ae%e7%9a%84%e5%ae%89%e5%85%a8%e8%ae%be%e7%bd%ae" class="header-anchor"&gt;&lt;/a&gt;十二、建议的安全设置
&lt;/h2&gt;&lt;h3 id="不要公开真实信息"&gt;&lt;a href="#%e4%b8%8d%e8%a6%81%e5%85%ac%e5%bc%80%e7%9c%9f%e5%ae%9e%e4%bf%a1%e6%81%af" class="header-anchor"&gt;&lt;/a&gt;不要公开真实信息
&lt;/h3&gt;&lt;p&gt;公开教程里不要写：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;真实公网 IP&lt;/li&gt;
&lt;li&gt;真实 Tailscale IP&lt;/li&gt;
&lt;li&gt;真实用户名&lt;/li&gt;
&lt;li&gt;真实私钥路径&lt;/li&gt;
&lt;li&gt;服务器密码&lt;/li&gt;
&lt;li&gt;私钥内容&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.env&lt;/code&gt; 里的生产配置&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;用占位符就够：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;your-server-public-ip
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;100.x.y.z
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;your-user
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;~/.ssh/your-key
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="尽量使用密钥登录"&gt;&lt;a href="#%e5%b0%bd%e9%87%8f%e4%bd%bf%e7%94%a8%e5%af%86%e9%92%a5%e7%99%bb%e5%bd%95" class="header-anchor"&gt;&lt;/a&gt;尽量使用密钥登录
&lt;/h3&gt;&lt;p&gt;比起密码登录，更推荐 SSH key。&lt;/p&gt;
&lt;p&gt;私钥权限建议设置为：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod &lt;span class="m"&gt;600&lt;/span&gt; ~/.ssh/your-key
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="保留公网-ssh-的最小暴露"&gt;&lt;a href="#%e4%bf%9d%e7%95%99%e5%85%ac%e7%bd%91-ssh-%e7%9a%84%e6%9c%80%e5%b0%8f%e6%9a%b4%e9%9c%b2" class="header-anchor"&gt;&lt;/a&gt;保留公网 SSH 的最小暴露
&lt;/h3&gt;&lt;p&gt;如果已经能稳定通过 Tailscale 连接服务器，可以考虑收紧云服务器安全组。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;公网 SSH 只允许自己的固定 IP&lt;/li&gt;
&lt;li&gt;或者关闭公网 SSH，仅通过 Tailscale 访问&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个操作要谨慎。关闭公网 SSH 前，一定要确认 Tailscale 可以稳定连接，否则容易把自己锁在服务器外面。&lt;/p&gt;
&lt;h2 id="十三常见问题排查"&gt;&lt;a href="#%e5%8d%81%e4%b8%89%e5%b8%b8%e8%a7%81%e9%97%ae%e9%a2%98%e6%8e%92%e6%9f%a5" class="header-anchor"&gt;&lt;/a&gt;十三、常见问题排查
&lt;/h2&gt;&lt;h3 id="tailscale-status-看不到服务器"&gt;&lt;a href="#tailscale-status-%e7%9c%8b%e4%b8%8d%e5%88%b0%e6%9c%8d%e5%8a%a1%e5%99%a8" class="header-anchor"&gt;&lt;/a&gt;tailscale status 看不到服务器
&lt;/h3&gt;&lt;p&gt;检查服务器是否已经登录：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tailscale status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果没有登录，重新执行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo tailscale up
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="本地能看到服务器但-ssh-失败"&gt;&lt;a href="#%e6%9c%ac%e5%9c%b0%e8%83%bd%e7%9c%8b%e5%88%b0%e6%9c%8d%e5%8a%a1%e5%99%a8%e4%bd%86-ssh-%e5%a4%b1%e8%b4%a5" class="header-anchor"&gt;&lt;/a&gt;本地能看到服务器，但 SSH 失败
&lt;/h3&gt;&lt;p&gt;先测试网络：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ping 100.x.y.z
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;再测试 SSH：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh -v your-user@100.x.y.z
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;-v&lt;/code&gt; 会输出详细日志，方便判断是网络问题、密钥问题还是用户名问题。&lt;/p&gt;
&lt;h3 id="permission-denied"&gt;&lt;a href="#permission-denied" class="header-anchor"&gt;&lt;/a&gt;Permission denied
&lt;/h3&gt;&lt;p&gt;通常是 SSH 认证问题，而不是 Tailscale 网络问题。&lt;/p&gt;
&lt;p&gt;重点检查：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用户名是否正确&lt;/li&gt;
&lt;li&gt;私钥路径是否正确&lt;/li&gt;
&lt;li&gt;私钥权限是否为 &lt;code&gt;600&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;服务器上是否有对应公钥&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="连接超时"&gt;&lt;a href="#%e8%bf%9e%e6%8e%a5%e8%b6%85%e6%97%b6" class="header-anchor"&gt;&lt;/a&gt;连接超时
&lt;/h3&gt;&lt;p&gt;如果连接 Tailscale IP 也超时，检查：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;本地 Tailscale 是否在线&lt;/li&gt;
&lt;li&gt;服务器 Tailscale 是否在线&lt;/li&gt;
&lt;li&gt;两台设备是否在同一个 Tailscale 账号或 tailnet 中&lt;/li&gt;
&lt;li&gt;服务器防火墙是否限制了来自 &lt;code&gt;tailscale0&lt;/code&gt; 网卡的 SSH&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可以在服务器上查看 SSH 是否监听：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo ss -tulnp &lt;span class="p"&gt;|&lt;/span&gt; grep &lt;span class="s1"&gt;&amp;#39;:22&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="十四完整推荐流程"&gt;&lt;a href="#%e5%8d%81%e5%9b%9b%e5%ae%8c%e6%95%b4%e6%8e%a8%e8%8d%90%e6%b5%81%e7%a8%8b" class="header-anchor"&gt;&lt;/a&gt;十四、完整推荐流程
&lt;/h2&gt;&lt;p&gt;我的推荐流程是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先用能连服务器的网络登录服务器&lt;/li&gt;
&lt;li&gt;服务器安装 Tailscale&lt;/li&gt;
&lt;li&gt;本地电脑安装 Tailscale&lt;/li&gt;
&lt;li&gt;两台设备登录同一个 Tailscale 账号&lt;/li&gt;
&lt;li&gt;在服务器执行 &lt;code&gt;tailscale ip -4&lt;/code&gt; 获取 &lt;code&gt;100.x.y.z&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;本地用 &lt;code&gt;ssh your-user@100.x.y.z&lt;/code&gt; 测试连接&lt;/li&gt;
&lt;li&gt;写入 &lt;code&gt;~/.ssh/config&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;以后直接 &lt;code&gt;ssh your-server&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;在 Codex 中使用 &lt;code&gt;ssh your-server &amp;quot;命令&amp;quot;&lt;/code&gt; 做远程控制&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;到这一步，校园网能不能直连云服务器公网 SSH，就没那么重要了。因为真正使用的是 Tailscale 私有网络。&lt;/p&gt;
&lt;h2 id="十五命令速查"&gt;&lt;a href="#%e5%8d%81%e4%ba%94%e5%91%bd%e4%bb%a4%e9%80%9f%e6%9f%a5" class="header-anchor"&gt;&lt;/a&gt;十五、命令速查
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;命令&lt;/th&gt;
 &lt;th&gt;含义&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;curl -fsSL https://tailscale.com/install.sh | sh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Linux 安装 Tailscale&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;sudo tailscale up&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;登录并加入 tailnet&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;tailscale status&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;查看当前 tailnet 设备状态&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;tailscale ip -4&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;查看本机 Tailscale IPv4 地址&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ssh your-user@100.x.y.z&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;通过 Tailscale IP 连接服务器&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ssh -i ~/.ssh/your-key your-user@100.x.y.z&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;使用私钥通过 Tailscale 连接&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ssh -v your-server&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;输出 SSH 调试日志&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ssh your-server &amp;quot;df -h&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;远程查看服务器磁盘&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;sudo tailscale set --ssh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;启用 Tailscale SSH&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="十六总结"&gt;&lt;a href="#%e5%8d%81%e5%85%ad%e6%80%bb%e7%bb%93" class="header-anchor"&gt;&lt;/a&gt;十六、总结
&lt;/h2&gt;&lt;p&gt;校园网无法 SSH 时，不一定是服务器配置错了，也可能是网络环境对端口或长连接不友好。&lt;/p&gt;
&lt;p&gt;Tailscale 的价值在于：它给本地电脑和服务器建立了一个稳定的私有网络。之后我们不再依赖公网 SSH 链路，而是通过 &lt;code&gt;100.x.y.z&lt;/code&gt; 这类 Tailscale 地址连接服务器。&lt;/p&gt;
&lt;p&gt;对个人开发者来说，最舒服的组合是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Tailscale IP + SSH key + ~/.ssh/config + Codex
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;配置完成后，连接服务器会变得很轻：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh your-server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后 Codex 也可以基于这个别名帮你做远程排查、部署和记录整理。&lt;/p&gt;</description></item></channel></rss>