在不暴露公网端口的前提下,通过 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安装与组网
服务器端安装与启动:
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up终端会输出一个认证链接,复制链接到浏览器登录账号并批准机器。服务器终端显示 Success 即表示加入网络。
配置 SSH 别名连接
为避免记忆动态 IP,建议配置 SSH Config。编辑本地 ~/.ssh/config 文件:
Host my-serverHostName 100.x.y.zUser rootIdentityFile ~/.ssh/id_ed25519IdentitiesOnly yes其中 HostName 可通过服务器端运行 tailscale ip 获取,或直接使用 MagicDNS 域名(如 server-name.tailnet-name.ts.net)。
验证与排查
1. 网络连通性:在本地运行 ping 100.x.y.z 或 tailscale ping 100.x.y.z。
2. 连接测试:运行 ssh my-server,若无需输入密码直接进入即成功。
3. 状态检查:服务器端运行 tailscale status,确保状态为 Connected。
4. 常见故障:若连接超时,检查服务器防火墙是否放行本地网络流量(Tailscale 接口通常为 tailscale0);若密钥被拒绝,检查服务器 /etc/ssh/sshd_config 中 PubkeyAuthentication 是否为 yes。
安全加固建议
确认密钥登录无误后,建议禁用密码登录以防暴力破解。编辑服务器 /etc/ssh/sshd_config:
PasswordAuthentication no
PermitRootLogin prohibit-password修改后重启 SSH 服务:sudo systemctl restart sshd。
参考文档
- Tailscale Official: Connect to SSH
- Tailscale Official: Tailscale SSH (Feature Comparison)
- SSH.com: ssh-copy-id
原文链接:https://www.zjcp.cc/ask/11651.html
