尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

macOS SSH 管理利器 Royal TSX:密钥、隧道与多服务器实战指南

macOS SSH 管理利器 Royal TSX:密钥、隧道与多服务器实战指南 入行这些年我几乎每天都要跟 SSH 打交道。服务器要管、防火墙要调、代码要部署……macOS 自带 Terminal 其实够用但当你手里的机器超过二十台、密钥有两三把、还得时不时连 Windows 远程桌面和网内 NAS 的时候一个像样的 SSH 管理工具就成了刚需。Royal TSX 就是我在 macOS 上用了很久的那一个。Royal TSX 是 macOS 平台上一款老牌的远程连接管理工具SSH 是它的核心主业但远不止于此——RDP、VNC、SFTP、Web 终端、PowerShell 这些协议它都能统一管理。这篇教程我会从为什么选它开始到怎么把密钥、端口转发、多台服务器管理都用起来再到我踩过的坑和排查经验尽量写成一份能直接上手的实操笔记。无论你是刚入行的运维、天天连远程开发的程序员还是帮公司管十几台设备的兼职管理员都适合往下看。1. 为什么我在 macOS 上最终选了 Royal TSX1.1 macOS 自带终端到底缺在哪说实话macOS 自带的 Terminal.app 配合 zsh或者换成 iTerm2 再挂一套 Zmodem应付一两台机器完全没问题。真正的痛点出现在机器多了、认证方式杂了、任务开始并行之后。机器多了以后每次都要手动敲 ssh userhost -p 端口IP 容易记混窗口一多也分不清哪个标签是哪台机器。密钥认证要自己维护 ~/.ssh/config虽然这是好习惯但纯文本配置改起来终归有门槛一个空格错了整段连接就废了。跨协议的问题更明显我这边要连 Linux、要连 Windows 远程桌面、要看 vSphere 虚拟机控制台、要登 NAS 管理页系统自带的工具是零散的没有统一入口。还有会话恢复能力弱Terminal 窗口一关之前在哪些服务器上、开了哪些端口转发全都不记得。这些场景凑到一起就需要一个连接管理器而不只是一个终端模拟器。这也是 Royal TSX 这类工具存在的根本原因它把连接这件事本身管起来终端只是其中一个展示窗口。1.2 Royal TSX 的定位与核心优势Royal TSX 来自德国 Royal Apps 团队名字看着像编辑器实际是个全能型远程连接管理套装。Windows 上叫 Royal TSmacOS 上叫 Royal TSX两边可以共用配置文件这对混合环境特别友好。它的核心优势我总结成四点协议覆盖面够广。SSH、SFTP、RDP、VNC、FTP、Telnet、PowerShell、HTTP(S) 预览、TeamViewer 调用……几乎你能想到的远程访问方式都能在一棵连接树里管理。凭据集中管理。密码、私钥、通行证都可以存进 Royal TSX 自己的凭据库再用主密码或 macOS 钥匙串锁起来不需要每次连接都重新输入。连接树组织能力强。可以建文件夹、用颜色标记、打标签、快速过滤几十台机器也能一眼定位。会话复用和隧道配置非常顺手。SSH 的 ControlMaster、本地/远程端口转发都能在图形界面里配置不用每次敲一串 ssh -L 参数。当然它不是那种零学习成本的工具界面菜单偏传统初次使用稍显复杂。但一旦把连接树和密钥配置好日常体验会非常顺。而且免费基础版就够用基础版限制的是同时打开的标签/连接数量个人日常管理完全够觉得值再升级 Pro一次买断没有订阅压力。1.3 与同类工具的选型对比给还在犹豫的人一个快速参考表工具协议支持凭据管理价格/模式适合场景Royal TSXSSH/RDP/VNC/SFTP等强内置凭据库基础免费Pro买断多协议、多主机统一管理iTerm2SSH终端弱依赖 ssh config免费开源单机或少量机器、重度终端用户TermiusSSH/SFTP/端口转发强跨设备同步订阅制跨平台、移动端也要连SecureCRTSSH/串口/Telnet强付费老牌网工、串口设备调试FinalShellSSH/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 nameIP 或域名、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再退回去用 RSAssh-keygen -t rsa -b 4096 -C my-macbook-20250601 -f ~/.ssh/id_rsa生成过程中会提示设置私钥口令passphrase。建议设置一个这样即使私钥文件被偷走别人还需要口令才能使用。第二步部署公钥到服务器。经典做法是用 ssh-copy-idssh-copy-id -i ~/.ssh/id_ed25519.pub -p 22 userserver-ip如果目标服务器没装 ssh-copy-id手动执行cat ~/.ssh/id_ed25519.pub | ssh userserver-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如果权限太宽松比如 644SSH 客户端会直接拒绝使用。这个坑极常见尤其从 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 userserver场景二把本机服务临时暴露给远程服务器。比如本机跑了一个调试用的 Web 服务在 8080 端口远程服务器需要访问它。建一条 Remote Forwarding源填远程的 18080目标填本机的 127.0.0.1:8080。连接建立后远程服务器访问 http://127.0.0.1:18080 就能到达你的本地服务命令行写法对应ssh -R 18080:127.0.0.1:8080 userserver这两种隧道在 Royal TSX 里配置一次之后每次连接自动带上不用记参数。用完记得关别长期挂着不需要的转发。3.4 配置的导入导出与迁移Royal TSX 的连接配置默认保存在本机。换电脑、重装系统前建议在 File → Export 里导出一次配置生成 .rtsx 文件。重装完 macOS 后再导入连接树、凭据引用、隧道规则都能恢复省去重新配几十台机器的功夫。如果你像我一样同时用 Windows 和 macOS可以把导出的配置放在网盘或内网共享里两边分别用 Royal TS 和 Royal TSX 导入保持连接树一致。注意密钥文件路径在两边可能不同Windows 是 C:\Users\xxx.ssh\id_ed25519macOS 是 /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 gitgitlab.example.com。如果返回 Welcome to GitLab, username说明认证没问题如果还是 Permission denied继续往下查。用 ssh -vT gitgitlab.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 gitgitlab.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 连接属性里设置环境变量 LANGen_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 的配置导出文件放在内网网盘每隔一段时间导出一次。重装系统、换电脑、甚至同事需要接手我的服务器清单时直接导入就能用。工具本身可以换但组织好的连接知识才是最值钱的资产。
返回列表