入行这些年,我几乎每天都要跟 SSH 打交道。服务器要管、防火墙要调、代码要部署……macOS 自带 Terminal 其实够用,但当你手里的机器超过二十台、密钥有两三把、还得时不时连 Windows 远程桌面和网内 NAS 的时候,一个像样的 SSH 管理工具就成了刚需。Royal TSX 就是我在 macOS 上用了很久的那一个。
Royal TSX 是 macOS 平台上一款老牌的远程连接管理工具,SSH 是它的核心主业,但远不止于此——RDP、VNC、SFTP、Web 终端、PowerShell 这些协议它都能统一管理。这篇教程我会从"为什么选它"开始,到"怎么把密钥、端口转发、多台服务器管理都用起来",再到"我踩过的坑和排查经验",尽量写成一份能直接上手的实操笔记。无论你是刚入行的运维、天天连远程开发的程序员,还是帮公司管十几台设备的兼职管理员,都适合往下看。
1. 为什么我在 macOS 上最终选了 Royal TSX
1.1 macOS 自带终端到底缺在哪
说实话,macOS 自带的 Terminal.app 配合 zsh,或者换成 iTerm2 再挂一套 Zmodem,应付一两台机器完全没问题。真正的痛点出现在"机器多了、认证方式杂了、任务开始并行"之后。
机器多了以后,每次都要手动敲 ssh user@host -p 端口,IP 容易记混,窗口一多也分不清哪个标签是哪台机器。密钥认证要自己维护 ~/.ssh/config,虽然这是好习惯,但纯文本配置改起来终归有门槛,一个空格错了整段连接就废了。跨协议的问题更明显:我这边要连 Linux、要连 Windows 远程桌面、要看 vSphere 虚拟机控制台、要登 NAS 管理页,系统自带的工具是零散的,没有统一入口。还有会话恢复能力弱,Terminal 窗口一关,之前在哪些服务器上、开了哪些端口转发,全都不记得。
这些场景凑到一起,就需要一个"连接管理器",而不只是一个"终端模拟器"。这也是 Royal TSX 这类工具存在的根本原因:它把连接这件事本身管起来,终端只是其中一个展示窗口。
1.2 Royal TSX 的定位与核心优势
Royal TSX 来自德国 Royal Apps 团队,名字看着像编辑器,实际是个全能型远程连接管理套装。Windows 上叫 Royal TS,macOS 上叫 Royal TSX,两边可以共用配置文件,这对混合环境特别友好。
它的核心优势我总结成四点:
- 协议覆盖面够广。SSH、SFTP、RDP、VNC、FTP、Telnet、PowerShell、HTTP(S) 预览、TeamViewer 调用……几乎你能想到的远程访问方式,都能在一棵连接树里管理。
- 凭据集中管理。密码、私钥、通行证都可以存进 Royal TSX 自己的凭据库,再用主密码或 macOS 钥匙串锁起来,不需要每次连接都重新输入。
- 连接树组织能力强。可以建文件夹、用颜色标记、打标签、快速过滤,几十台机器也能一眼定位。
- 会话复用和隧道配置非常顺手。SSH 的 ControlMaster、本地/远程端口转发都能在图形界面里配置,不用每次敲一串 ssh -L 参数。
当然它不是那种"零学习成本"的工具,界面菜单偏传统,初次使用稍显复杂。但一旦把连接树和密钥配置好,日常体验会非常顺。而且免费基础版就够用,基础版限制的是同时打开的标签/连接数量,个人日常管理完全够,觉得值再升级 Pro,一次买断,没有订阅压力。
1.3 与同类工具的选型对比
给还在犹豫的人一个快速参考表:
| 工具 | 协议支持 | 凭据管理 | 价格/模式 | 适合场景 |
|---|---|---|---|---|
| Royal TSX | SSH/RDP/VNC/SFTP等 | 强,内置凭据库 | 基础免费,Pro买断 | 多协议、多主机统一管理 |
| iTerm2 | SSH(终端) | 弱,依赖 ssh config | 免费开源 | 单机或少量机器、重度终端用户 |
| Termius | SSH/SFTP/端口转发 | 强,跨设备同步 | 订阅制 | 跨平台、移动端也要连 |
| SecureCRT | SSH/串口/Telnet | 强 | 付费 | 老牌网工、串口设备调试 |
| FinalShell | SSH/SFTP/监控 | 中 | 免费/付费 | Windows用户、需要服务器监控面板 |
我的主观建议是:如果只连 Linux 终端,iTerm2 + ssh config 完全够;如果和我一样要管 Windows 桌面、虚拟机、NAS、多台云主机,还要保存一堆密码和密钥,Royal TSX 的集中管理优势就体现出来了。
2. 核心功能拆解:它不只是 SSH 客户端
2.1 连接树、标签与颜色标记
第一次打开 Royal TSX,你会看到左侧是一棵连接树,类似于文件管理器的目录结构。你可以建"服务器组"文件夹,再把一台一台机器拖进去。这个连接树是这款工具的灵魂,我的使用习惯是这样的:
- 按项目建顶层文件夹,比如"公司业务""家庭实验室""客户现场";
- 每个文件夹里再按角色建子文件夹,比如"Web服务器""数据库服务器""跳板机";
- 给每台机器用颜色标记状态,绿色是生产、黄色是测试、灰色是已停用;
- 用标签做跨文件夹筛选,比如给所有需要定期更新的机器打上"update-2025"标签。
连接树顶部还有一个快速过滤输入框,输入关键字立刻过滤出匹配的服务器,机器再多也不会在列表里翻来翻去找。我见过有的同事把几十台机器堆在根节点下面,每次找机器眼睛都看花,其实花十分钟归类一下,效率提升非常明显。
另外右键菜单里有个"作为模板保存"的选项,可以把某台机器的所有配置存成模板,新建连接时选择模板再改 IP,几十台相同配置的机器可以批量生成,适合克隆部署场景。
2.2 凭据库与钥匙串集成
Royal TSX 的凭据管理是独立模块:你可以把服务器地址、端口、用户名、密码、私钥路径全部集中存放在凭据库里,然后在连接里引用这些凭据。这样做的好处是:服务器信息改了,只需改凭据库里的记录,所有引用它的连接都会自动生效。
凭据库本身支持主密码保护。你可以设置一个加载凭据库时要求输入的主密码,也可以直接走 macOS 钥匙串解锁。这样即使别人拿到你的电脑,也看不到明文密码。私钥文件建议放在 ~/.ssh/ 目录下,权限保持 600。Royal TSX 引用私钥时可以直接指向文件路径,也可以把私钥内容导入到凭据库里。我个人的建议是指向文件路径而不是复制内容,这样后续密钥轮换时只需要替换文件,不需要在多个连接里逐个改。
2.3 终端体验:标签、分屏、主题与字体
Royal TSX 的终端内置了标签页和分屏功能。连接多台机器时,可以像浏览器一样横向开一堆标签,也可以在一个窗口里上下左右分屏同时看多台机器。这个特性在批量发布或对比两边环境配置时特别好用,比如左边窗口 watch 日志,右边窗口改配置文件,改完直接回车重启服务。
终端外观可以自定义:配色方案、光标样式、滚动历史行数都能调。字体这块多说一句,很多人喜欢在代码编辑器里找"接近 macOS 原生体验"的字体,其实在 Royal TSX 里直接选系统自带的 Menlo 或 SF Mono,观感就很接近。用 JetBrains Mono、Cascadia Code 也都没问题,关键是打开字体平滑渲染,默认设置下中文注释已经很清晰,不需要额外折腾。
终端还支持代理命令和自动响应规则。比如可以设置收到"password:"提示时自动填入某个凭据,虽然我不建议在生产环境这么干,但确实算个灵活的小功能。
2.4 隧道、任务与命令面板
除了单纯的连接,Royal TSX 还能在图形界面里维护 SSH 隧道,也就是端口转发。比如本地调试时想访问服务器那边的数据库,只需要新建一条本地转发规则,把服务器的 3306 映射到本机的 13306,连接一建立隧道就自动带上,不用手动传参。
它还内置了任务系统。可以给某个连接配置"连接后自动执行命令",比如连上 Web 服务器后自动执行 cd /var/www && git pull,省去每次手敲。命令面板可以保存常用命令片段,类似快捷短语,需要的时候一键发送到终端。长期面对重复操作的朋友,建议把操作清单整理成模板,能省不少事。
3. SSH 连接实操:从新建连接到密钥登录
3.1 新建 SSH 连接的基础配置
先说最简单的方式:用密码连接。
- 在连接树中右键 → New Connection → 选 SSH。
- 在右侧配置面板里填 Host name(IP 或域名)、Port(默认 22)、Username。
- Authentication 选择 Password,填好密码。
- 点击 Connect,第一次连接会有 host key 确认,类似命令行的 Are you sure you want to continue connecting (yes/no)。确认后就进入终端了。
这里有个细节:如果目标服务器的 SSH 端口不是默认的 22,一定要在连接配置里提前改好。另外密码登录虽然简单,但有两个隐患:一是每次会话验证都要输密码,不方便做自动化;二是弱密码容易被暴力破解。所以只要条件允许,强烈建议切成密钥登录。
3.2 用密钥登录:生成、部署、配置
密钥登录的完整链路是:本地生成一对密钥(公钥+私钥),把公钥放到服务器上,本地用私钥去认证。私钥相当于你的身份证,一定不要泄露。
第一步,生成密钥。在本地终端执行:
ssh-keygen -t ed25519 -C "my-macbook-$(date +%Y%m%d)" -f ~/.ssh/id_ed25519Ed25519 是目前综合速度和安全性都不错的算法,比老的 RSA 2048 更短更安全。如果对方服务器比较老、不支持 Ed25519,再退回去用 RSA:
ssh-keygen -t rsa -b 4096 -C "my-macbook-20250601" -f ~/.ssh/id_rsa生成过程中会提示设置私钥口令(passphrase)。建议设置一个,这样即使私钥文件被偷走,别人还需要口令才能使用。
第二步,部署公钥到服务器。经典做法是用 ssh-copy-id:
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 22 user@server-ip如果目标服务器没装 ssh-copy-id,手动执行:
cat ~/.ssh/id_ed25519.pub | ssh user@server-ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"第三步,在 Royal TSX 里使用密钥。连接的 Authentication 从 Password 改成 Public Key,然后选择 Private Key 文件路径。如果给私钥设置了口令,首次使用会要求输入一次,之后可以勾选"保存到钥匙串",就不用每次输入了。
注意:私钥文件权限必须是 600 或 400,如果权限太宽松(比如 644),SSH 客户端会直接拒绝使用。这个坑极常见,尤其从 Windows 拷贝密钥到 macOS 后权限经常是 644,需要 chmod 600 修复。
3.3 会话复用与端口转发
先说会话复用。每次 SSH 连接都要经过 TCP 握手和密钥协商,频繁连接时有明显延迟。利用 ControlMaster 机制可以复用已建立的连接,在 ~/.ssh/config 里加这段:
Host * ControlMaster auto ControlPath ~/.ssh/controlmasters/%r@%h:%p ControlPersist 10m记得先执行 mkdir -p ~/.ssh/controlmasters。配置生效后,你在同一台机器上再开新连接,会直接复用之前的会话,秒开。Royal TSX 的连接属性里也有会话复用开关,开启后体感提升非常明显。
再说端口转发。我举两个最常见的场景。
场景一:本地调试远程数据库。远程主机内网有 MySQL 监听 127.0.0.1:3306,本地想用客户端去连。在 Royal TSX 的 SSH 连接属性里找到隧道/转发设置,新建一条 Local Forwarding,源填 127.0.0.1:13306,目标填 127.0.0.1:3306。连接建立后,本机访问 127.0.0.1:13306 就等于访问远程的 MySQL,命令行写法对应:
ssh -L 13306:127.0.0.1:3306 user@server场景二:把本机服务临时暴露给远程服务器。比如本机跑了一个调试用的 Web 服务在 8080 端口,远程服务器需要访问它。建一条 Remote Forwarding,源填远程的 18080,目标填本机的 127.0.0.1:8080。连接建立后,远程服务器访问 http://127.0.0.1:18080 就能到达你的本地服务,命令行写法对应:
ssh -R 18080:127.0.0.1:8080 user@server这两种隧道在 Royal TSX 里配置一次之后,每次连接自动带上,不用记参数。用完记得关,别长期挂着不需要的转发。
3.4 配置的导入导出与迁移
Royal TSX 的连接配置默认保存在本机。换电脑、重装系统前,建议在 File → Export 里导出一次配置,生成 .rtsx 文件。重装完 macOS 后再导入,连接树、凭据引用、隧道规则都能恢复,省去重新配几十台机器的功夫。
如果你像我一样同时用 Windows 和 macOS,可以把导出的配置放在网盘或内网共享里,两边分别用 Royal TS 和 Royal TSX 导入,保持连接树一致。注意密钥文件路径在两边可能不同,Windows 是 C:\Users\xxx.ssh\id_ed25519,macOS 是 /Users/xxx/.ssh/id_ed25519,导入后需要检查一次私钥路径,别等连接报"找不到私钥"才发现。
重装 macOS 这种事,我遇到过不止一次。配置导出文件放在能随时拿到的地方,比什么都重要。
4. 真实场景:配合 vscode、git、Windows 服务器一起用
4.1 和 vscode Remote-SSH 的分工
很多程序员现在用 vscode Remote-SSH 连远程服务器写代码,体验确实爽。那是不是有了 vscode 就不需要 Royal TSX 了?我的看法是两者定位不同,完全可以配合使用。
vscode Remote-SSH 的强项是远程开发体验:远程目录、代码补全、调试、终端集成。它的终端其实是附带功能,不适合做大量的多机连接管理。而 Royal TSX 的强项恰恰是多连接管理 + 多协议 + 隧道。
我在实际工作中的分工是:
- vscode 负责打开某个远程项目的代码,专注写业务;
- Royal TSX 负责所有基础设施操作:重启服务、看日志、临时改文件、数据库隧道、连 Windows 远程桌面、登 NAS 管理页面;
- 两者同时开着互不冲突,因为 vscode 的 SSH 配置同样读取 ~/.ssh/config,而 Royal TSX 也支持读同一个 config 文件。
这里有个小经验:如果你在 vscode 里连接远程时遇到"此扩展在此工作区中被禁用,因为其被定义为在远程扩展主机中运行"这类提示,通常是本地/远程扩展安装策略不一致导致的。可以在 Royal TSX 里 SSH 到同一台机器,检查远程端的 .vscode-server 目录是否完整,删除损坏目录后让 vscode 重新安装远程服务即可。
4.2 把 ~/.ssh/config 变成你的中转站
Royal TSX 支持直接读取/编辑 ~/.ssh/config,也支持在连接里使用 config 中定义的主机别名。我习惯把所有服务器的公共参数集中在 config 里管理,然后在 Royal TSX 里只需要填主机别名,不必重复填端口和密钥路径。
举个例子,在 ~/.ssh/config 里写:
Host web-prod HostName 192.168.10.20 User ubuntu Port 2222 IdentityFile ~/.ssh/id_ed25519 ServerAliveInterval 30在 Royal TSX 新建 SSH 连接时,Host 填 web-prod,它会自动识别 config 里的 HostName、User、Port、密钥。这样既保留了命令行党的习惯,又享受了 GUI 的管理便利,两边不会出现两套真相。
4.3 一个真实排查案例:gitlab 克隆失败
有次在同事的新 Mac 上配 GitLab 访问,git clone 一直报 Permission denied (publickey)。排查路径很有代表性,完整走一遍:
- 先确认密钥是否已加到 GitLab:执行 ssh -T git@gitlab.example.com。如果返回 Welcome to GitLab, @username,说明认证没问题;如果还是 Permission denied,继续往下查。
- 用 ssh -vT git@gitlab.example.com 查看详细日志,重点看 Offering public key 和 Server accepts key 两行。如果客户端根本没提供密钥,多半是 ssh-agent 没加载。
- 确认密钥文件权限:ls -l ~/.ssh/id_ed25519,不是 600 就改。
- 把公钥内容贴到 GitLab 的 SSH Keys 页面:cat ~/.ssh/id_ed25519.pub。
- 最后 ssh -T git@gitlab.example.com 验证。
在 Royal TSX 里排查也一样,你甚至可以新建一个 SSH 连接指向 gitlab 服务器的 22 端口并选对应密钥,看它能不能通过。这样能把"Royal TSX 无法连"和"gitlab 不认密钥"两个问题快速分开。
4.4 与 Windows 端服务器的协作
公司里不是只有 Linux。我经常要连 Windows Server 远程桌面,偶尔登一下装了 OpenSSH Server 的 Windows 机器。Royal TSX 对这两者都支持:RDP 协议直接管理 Windows 远程桌面,SSH 协议也可以连 Windows 的 OpenSSH 服务端。
如果你在 Windows 端更熟悉 Bitvise SSH Server,在 macOS 端用 Royal TSX 去连它也完全没问题,因为双方遵循的都是标准 SSH 协议。需要注意认证方式:Bitvise 默认可能启用了它自己的虚拟账户体系,密钥登录时要把公钥放到对应用户的 authorized_keys 里,路径和 Linux 略有差异。遇到连不上的情况,先看 Bitvise 服务端日志,它会清楚地告诉你认证在哪一步失败。
5. 常见问题与排查技巧实录
5.1 连接超时、拒绝连接
症状:点击连接后一直转圈,最后提示 timeout;或者直接提示 Connection refused。
排查思路:
- 先用 ping 和 nc 判断网络通不通:nc -vz host 22;
- 如果是 timeout,通常是防火墙或路由问题,检查安全组/防火墙是否放行 22 端口;
- 如果是 Connection refused,说明目标主机的 SSH 服务没起来或端口不对,在远程主机上执行 sudo systemctl status sshd 确认服务状态;
- 如果之前能连、现在突然超时,检查是不是本机 IP 被服务器的 fail2ban 拉黑了。用其他途径登上去看 fail2ban 日志。
这类问题 90% 是网络层面的问题,不要在密钥设置上死磕。先确认端口通不通,再谈认证。
5.2 Permission denied (publickey)
这是密钥登录最常见的报错。可能原因按概率排序:
- 私钥路径配置错了,Royal TSX 指向的文件不存在;
- 私钥文件权限太宽松,执行 chmod 600 ~/.ssh/id_ed25519;
- 公钥没有正确加到服务器的 authorized_keys,或者追加时把公钥内容折行、多了换行符;
- 服务器端 ~/.ssh 或 authorized_keys 权限不对,正确应该是 ~/.ssh 700、authorized_keys 600;
- 用了 ssh-agent 但 agent 里没加载钥匙,执行 ssh-add ~/.ssh/id_ed25519。
排查这类问题,强烈建议在 Royal TSX 里打开连接属性中的详细日志,或者直接用命令行 ssh -v 跑一遍。详细日志会告诉你到底是"没提供密钥"还是"服务器拒绝了密钥",两者方向完全不同。
5.3 known_hosts 冲突:Host key verification failed
症状:服务器重装系统后,再连接时报 Host key verification failed。
原因:本机保存了旧的主机指纹,与服务器新指纹不一致,SSH 出于安全考虑拒绝继续。
处理办法:
ssh-keygen -R 服务器IP删除旧指纹后重新连接,会再次提示确认新指纹。在 Royal TSX 里有时会弹窗,也可以选"更新/接受新密钥"。遇到这个警告时要冷静,确认服务器确实重装过再接受,如果不确定,一定要先走其他渠道核实,别盲目点确定。
5.4 终端乱码、颜色和复制粘贴问题
中文乱码:确认服务器和本机字符集。执行 locale,如果发现 LANG 不是 UTF-8,在 Royal TSX 连接属性里设置环境变量 LANG=en_US.UTF-8 或 zh_CN.UTF-8。
颜色不对:检查终端类型设置,Royal TSX 默认 TERM 通常是 xterm-256color,能显示更多颜色。如果你改过,又发现 ls 的高亮颜色不正常,多半是 TERM 没配对。
复制粘贴:Royal TSX 默认用 macOS 剪贴板,选中即复制、右键粘贴。如果你习惯中键粘贴,需要在设置里开启鼠标中键粘贴选项。这个设置藏得比较深,但开完很舒服,尤其是配合鼠标操作远程终端的时候。
5.5 批量登录、跳板机与反向隧道
批量登录不需要一个一个点。Royal TSX 支持选中多个连接再右键"全部打开"。我经常用它一次性打开几台测试机,然后配合分屏对比日志。管理几十台相同配置的机器时,利用连接树模板复制功能,改一改 IP 就能生成一堆连接,省去重复劳动。
跳板机场景:生产服务器不允许直接连接时,需要从跳板机跳转。在 Royal TSX 的 SSH 连接属性里可以设置 Jump Host,底层用的就是 ssh -J 功能。只需要维护跳板机地址和密钥,生产机会自动带上跳板链路。某些 NAS 或者存储设备不支持直连,也可以用这种方式绕一层进去。还有人会拿 SSH 连 NAS 去做存储池创建、系统维护之类的操作,在 Royal TSX 里跑这些长命令交互都很顺手。
反向隧道主要用于让远程机器能访问我的临时调试服务,属于远程转发场景,上面 3.3 节讲过。再补充一点:反向隧道很适合解决"远程服务器需要临时访问本机数据库客户端"之类的需求,用完就关,不需要在防火墙上开永久端口,安全上也更稳妥。
5.6 Royal TSX 自身的几个小毛病
用了几年,它也有一些不完美的地方:
- 界面偏老派,第一次打开可能觉得菜单多。解决办法是花十分钟把默认工具栏简化,只留常用按钮。
- 同时开很多会话时内存占用会上去。经常开三十个以上标签的话,建议把不用的连接及时关闭。
- 免费版同时打开的连接数量有限制。我遇到过弹窗提示达到免费版限制,后来买了 Pro,一次买断,没有订阅压力。
- 升级大版本后偶尔出现凭据库打不开的情况,导出备份 + 主密码双重保障很有必要。
- 多个会话同步操作的时候,偶尔会出现焦点丢失,需要点一下终端窗口才恢复键盘输入。这个不算严重,但遇到时别慌。
我在实际使用中最深的一个体会是:把配置和凭据管理做好之后,Royal TSX 几乎是隐身的——你不会再关心"怎么连",只会关心"要去哪台机器做什么"。这才是工具该有的状态。
最后再分享一个小习惯:我把 Royal TSX 的配置导出文件放在内网网盘,每隔一段时间导出一次。重装系统、换电脑、甚至同事需要接手我的服务器清单时,直接导入就能用。工具本身可以换,但组织好的连接知识才是最值钱的资产。