如何通过 Tailscale SSH 功能安全远程连接 Linux 服务器

文章导读
在不暴露公网端口的前提下,通过 Tailscale 构建私有网络是实现 Linux 服务器 SSH 安全远程管理的推荐方案,特别适合无公网 IP 或受限网络环境。
📋 目录
  1. 核心概念澄清
  2. 前置准备:生成 SSH 密钥
  3. 安装与组网
  4. 配置 SSH 别名连接
  5. 验证与排查
  6. 安全加固建议
  7. 参考文档
A A

在不暴露公网端口的前提下,通过 Tailscale 构建私有网络是实现 Linux 服务器 SSH 安全远程管理的推荐方案,特别适合无公网 IP 或受限网络环境。

先说结论:Tailscale 能将服务器和本地设备纳入同一私有网络,通过分配的内网 IP 或魔法域名直接 SSH 连接,无需配置端口映射。

  • 适合:无公网 IP、校园网/公司网受限、希望隐藏 SSH 端口的场景
  • 先准备:注册 Tailscale 账号、服务器需有联网权限、本地设备安装客户端、生成 SSH 密钥对
  • 验收:通过 tailscale status 确认在线、SSH 密钥免密登录成功

核心概念澄清

本文介绍的是“通过 Tailscale 网络 IP 进行标准 SSH 连接”,而非 Tailscale 官方提供的托管 SSH 服务(tailscale ssh)。前者兼容所有标准 SSH 客户端,配置更灵活;后者需要特定版本和权限。本方案适用于绝大多数 Linux 服务器管理场景。

前置准备:生成 SSH 密钥

为保障安全,强烈建议使用密钥认证而非密码认证。在本地电脑终端执行:

ssh-keygen -t ed25519 -C "your_email@example.com"

将公钥部署到服务器(需先通过密码或其他方式临时登录):

ssh-copy-id -i ~/.ssh/id_ed25519.pub 用户名@服务器初始 IP

安装与组网

服务器端安装与启动:

如何通过 Tailscale SSH 功能安全远程连接 Linux 服务器
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

终端会输出一个认证链接,复制链接到浏览器登录账号并批准机器。服务器终端显示 Success 即表示加入网络。

配置 SSH 别名连接

为避免记忆动态 IP,建议配置 SSH Config。编辑本地 ~/.ssh/config 文件:

Host my-server
    HostName 100.x.y.z
    User root
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes

其中 HostName 可通过服务器端运行 tailscale ip 获取,或直接使用 MagicDNS 域名(如 server-name.tailnet-name.ts.net)。

验证与排查

1. 网络连通性:在本地运行 ping 100.x.y.ztailscale ping 100.x.y.z

如何通过 Tailscale SSH 功能安全远程连接 Linux 服务器

2. 连接测试:运行 ssh my-server,若无需输入密码直接进入即成功。

3. 状态检查:服务器端运行 tailscale status,确保状态为 Connected。

4. 常见故障:若连接超时,检查服务器防火墙是否放行本地网络流量(Tailscale 接口通常为 tailscale0);若密钥被拒绝,检查服务器 /etc/ssh/sshd_configPubkeyAuthentication 是否为 yes。

安全加固建议

确认密钥登录无误后,建议禁用密码登录以防暴力破解。编辑服务器 /etc/ssh/sshd_config

PasswordAuthentication no
PermitRootLogin prohibit-password

修改后重启 SSH 服务:sudo systemctl restart sshd

参考文档