新闻详情

新闻详情

首页 / 资讯中心 / 详情

Mac上SSH客户端termcc:安装配置、免密登录与端口转发实践

发布时间:2026/9/15 10:15:23来源:尧图网络
Mac上SSH客户端termcc:安装配置、免密登录与端口转发实践
1. 为什么我会在Mac上专门装一个SSH客户端1.1 终端自带的ssh不是不够用是不够“顺手”先说说我的日常。我每天的工作基本绕不开Linux服务器看日志、改配置、重启服务、查数据库有时候还要处理几台内网机器之间的互通问题。这些操作绝大部分都是通过SSH完成的所以SSH客户端在我这里的地位基本等同于写字楼白领手里的Office套件。Mac系统本身自带了OpenSSH客户端直接在“终端”App里敲ssh userhost就能连服务器。这个方案够用但不够顺手。痛点很明显第一你不小心关掉终端窗口会话就断了之前跑的长任务直接中断第二服务器一多IP地址、端口、用户名、密钥这些信息全靠脑子记时间一长必然乱第三终端默认的白底黑字在晚上看久了眼睛确实难受每次新开窗口都要重新调字体字号烦得很。我试过不少所谓的替代方案。有些工具功能确实强大但界面偏重配置项多到让人劝退有些工具轻量却缺少关键能力连密钥管理都得自己手动做。后来我接触到termcc这个Mac端的SSH客户端工具用了一段时间觉得它在“轻量”和“功能完整”之间找到了一个比较舒服的平衡点。所以这篇就打算从实际使用角度把安装、配置、日常使用到问题排查的过程完整记录下来给同样被SSH连接折腾过的人一个参考。1.2 termcc解决了哪几类问题先说结论。termcc不是那种“All in One”的重型IDE式工具它的定位更像是一个专注SSH场景的效率工具。它解决的核心问题可以归纳成四个会话管理把服务器信息集中保存不用每次手动输入IP、端口和用户名。密钥管理SSH密钥可以统一导入、导出和复用省去反复配置的麻烦。快捷操作标签页、分屏、快捷键切换多服务器操作时比系统自带终端高效。传输集成SFTP文件传输和端口转发功能内置不用另开一个工具。适合用它的群体我认为主要是这几类经常需要登录Linux服务器的后端开发、做运维的同事、需要管理多台云服务器的个人站长、以及在学校里要连实验室服务器的学生。如果你只是偶尔登一次服务器那系统自带终端就足够了但如果你一周要登几十次服务器省下的时间就很可观了。2. 安装与首次启动从Homebrew问题说起2.1 termcc的安装方式与版本选择termcc在Mac上的安装方式很简单有两种路径。一种是从它的官网直接下载dmg安装包双击拖进Applications目录就行另一种是用Homebrew安装。我个人推荐用Homebrew因为后续升级只需要一条命令不用去官网重新下载。brew update brew install termcc装完之后在“应用程序”里找到termcc双击启动即可。这里有一个细节如果你是从官网下载的dmg包系统首次打开时可能会提示“无法验证开发者”这时候需要到“系统设置 - 隐私与安全性”里手动点一下“仍要打开”。这不是什么问题是macOS对非App Store应用的常规提示跟软件本身无关。版本选择方面termcc分免费版和Pro版。免费版已经覆盖了日常SSH连接、会话保存、密钥登录这些核心能力Pro版额外提供了一些高级功能比如多标签页会话恢复、团队配置共享等。如果你只是个人使用免费版完全够用没必要一开始就花钱。2.2 安装Homebrew时的经典报错如果你选择用Homebrew安装大概率会遇到一个经典问题brew install执行到一半网络卡住最后报错退出。这个问题在Mac上特别常见多半不是你操作错了而是下载源在国内访问速度太慢导致的。我建议在安装Homebrew之前就先把镜像源换好避免中途浪费时间。具体做法是设置环境变量把默认的GitHub源替换成国内镜像。装完Homebrew之后再顺手把brew的repo源和bottle源也一并换了。做完这一步后续安装任何软件都会快很多。这里还要注意一个容易踩的坑Homebrew安装时报错Failed to connect to raw.githubusercontent.com port 443这不一定是网络断了很可能是本地DNS解析有问题。可以试试换一个公共DNS再重试比如把DNS改成223.5.5.5和119.29.29.29这两个地址在多数网络环境下解析GitHub相关域名都比较稳。改完之后重新执行安装命令成功率会高不少。2.3 首次启动的三个必要设置termcc第一次启动后我建议你先做三件事不要急着添加服务器。第一设置你的默认字体和主题。在偏好设置里把字体调成你习惯的等宽字体比如Menlo、Monaco或者JetBrains Mono字号建议14或15。主题我推荐深色底长时间盯着屏幕会舒服很多。第二确认终端类型设置。termcc默认的终端类型是xterm-256color这个值在多数Linux服务器上都能正常工作。但有极少数服务器对终端类型敏感如果你连接后出现终端显示错乱、方向键乱码之类的问题可以考虑把终端类型改成linux或vt100试试。第三设置全局快捷键。我会把“新建SSH连接”的快捷键设置为CmdShiftN“新建本地终端”设置为CmdShiftT。这样处理之后日常操作基本不离键盘效率提升很明显。3. 从第一台服务器连接到免密登录3.1 添加服务器信息termcc新建连接的界面很简单需要填的信息就几个主机名IP或域名、端口默认22、用户名。如果你有自定义的SSH配置文件也可以在连接配置里指定私钥文件。我见过一些人在termcc里把每一台服务器的信息都重新敲一遍这样比较费劲。其实termcc支持直接复用~/.ssh/config里的配置。如果你之前已经在系统终端里配置过SSH config文件那termcc启动时会自动识别这些主机配置不用重复录入。这个细节特别重要尤其是当你管理几十台服务器时重复录入纯属浪费时间。3.2 连接失败的排查链路添加好服务器信息后点连接结果半天没反应最后提示超时。这是新手最常遇到的问题。这里我给一个标准的排查链路按照这个顺序检查大部分问题都能定位到。第一步先确认服务器IP能不能ping通。在系统终端里执行ping 服务器IP如果包能正常返回说明基本网络通如果完全不通检查本机网络、服务器安全组/防火墙以及云服务商的控制台是否有公网IP绑定。第二步确认22端口是否可达。用nc -vz 服务器IP 22命令测试看到Connected to字样说明端口是通的如果卡住或提示Connection refused说明SSH服务没启动或者防火墙拦了22端口。第三步确认SSH服务本身是否正常。有些云服务器的镜像默认没有开启sshd服务这就解释了为什么能ping通、22端口也开着但SSH就是连不上。这时候需要到云服务商的控制台网页版VNC登录进去执行systemctl status sshd查看服务状态如果没启动就systemctl start sshd再把ssh服务设为开机自启。3.3 用密钥免密登录从生成到生效密码登录虽然简单但每次都要输入密码而且密码复杂度高的时候特别容易输错。SSH密钥登录是目前最推荐的方案安全性更高也免去反复输密码的烦恼。第一步生成密钥对。在Mac的终端里执行ssh-keygen -t ed25519 -C your_emailexample.com这里推荐用ed25519算法而不是传统的rsa。ed25519的密钥更短安全性更高生成和验证速度也更快。旧的RSA密钥动辄2048位甚至4096位在性能上明显不如ed25519。如果你的服务器系统版本较老不支持ed25519再回退到ssh-keygen -t rsa -b 4096。第二步把公钥复制到服务器上。推荐用ssh-copy-id命令ssh-copy-id -i ~/.ssh/id_ed25519.pub userserver_ip执行过程中会提示你输入一次密码之后再用termcc连接时就不需要输入密码了。如果没有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这条命令做的事情其实就是把公钥追加到服务器上~/.ssh/authorized_keys文件里。注意chmod权限一定要设置对~/.ssh目录要是700authorized_keys文件要是600权限设置不对的话很多服务器出于安全策略会直接拒绝使用密钥登录。第三步在termcc里指定私钥文件。连接配置界面里找到“认证方式”从“密码”切换成“密钥”然后选择你本地的私钥文件路径一般是~/.ssh/id_ed25519。保存后重新连接应该就能直接登录上去了。3.4 GitLab/GitHub的SSH密钥配置场景还有一种常见的密钥使用场景不是连服务器而是配Git平台。很多开发者在termcc里配置好了服务器密钥之后容易混淆“服务器SSH密钥”和“Git平台SSH密钥”的区别其实两者可以共用也可以分开。对于GitLab操作流程是在Mac本地生成一对密钥或者复用刚才那对然后把公钥内容粘贴到GitLab的设置页面的“SSH Keys”区域。之后执行git clone的时候如果用的SSH协议地址比如gitgitlab.com:some/project.git就能免密拉取代码了。这里有一个关键点如果服务器登录和Git平台用的是同一个~/.ssh目录我建议为不同用途创建不同密钥文件比如id_ed25519_server和id_ed25519_git然后在~/.ssh/config里做区分。这样即使某台服务器被攻破你的Git平台密钥也不会暴露。安全性会好很多。4. 终端之外端口转发与文件传输4.1 用本地端口转发访问内网服务SSH能干的远不只是登录终端。有一类非常实用的操作叫SSH端口转发也叫SSH隧道。它的作用是通过一台你能访问的服务器间接访问这台服务器所在内网里的某个服务。听起来有点绕举个例子。假设你有一台云服务器它的内网IP是10.0.0.10内网里有一台MySQL数据库在10.0.0.20:3306监听。数据库没有公网IP你无法直接连接。这时候你可以通过SSH隧道把本地的某个端口“映射”到数据库的3306端口上ssh -L 3307:10.0.0.20:3306 user10.0.0.10执行这条命令后你本地的3307端口就相当于一条“隧道”通向内网里的3306端口。然后你用数据库客户端连接127.0.0.1:3307就能操作内网数据库了。termcc里也内置了类似的端口转发配置。我在实际使用中非常依赖这个功能因为很多生产环境出于安全考虑不会把数据库、Redis这些服务直接暴露到公网而通过SSH隧道访问是既安全又省事的方式。4.2 SSH反向隧道让内网机器可以被外网访问与本地转发相对的概念是远程转发也叫反向隧道。它的作用是把你本机的某个端口暴露到远程服务器上让外网可以通过服务器来访问你本机的服务。这个场景在我帮朋友排查服务器问题时特别有用。比如我的开发机上跑了一个web服务端口是3000我想让远程服务器上的同事临时访问一下。在termcc或系统终端里执行ssh -R 8080:localhost:3000 userremote_server这条命令执行后远程服务器的8080端口就会转发到本机的3000端口。在远程服务器上访问http://localhost:8080就等于访问我本机的3000端口。需要注意的是SSH默认配置下反向隧道绑定的端口只监听在远程服务器的回环地址上如果想要让其他人也能访问需要修改远程服务器/etc/ssh/sshd_config里的GatewayPorts选项为yes。这个功能非常强大但使用时要格外注意安全不要随意把内部服务暴露到公网尤其是在生产环境。4.3 termcc里的SFTP文件传输日常运维不只是敲命令还经常要在本机和服务器之间传文件。传统的做法是用scp命令但每次传文件都要写完整的路径用久了实在麻烦。termcc内置了SFTP面板。在已连接的会话里可以直接打开SFTP文件浏览窗口左边是本地目录右边是服务器目录拖拽即可上传下载。这个交互比命令行直观太多特别适合传配置文件、日志包、备份文件这些场景。如果你更习惯命令行termcc也支持系统自带的scp命令配合会话名称使用。比如在termcc里配置了一个名为prod-web的会话那么可以在系统终端里直接执行scp ./backup.tar.gz prod-web:/home/user/前提是termcc把你配置的会话映射到了~/.ssh/config映射后系统级命令也能直接引用会话名省去记忆IP的麻烦。5. 高频故障排查思路5.1 “vscode连接ssh远程服务器”时的常见冲突不少人在vscode里装了Remote-SSH插件用remote方式打开远程代码目录做开发。这个方案本身很好用但经常有人遇到一个报错此扩展在此工作区中被禁用因为其被定义为在远程扩展主机中运行。初次看到这个提示的人会有点懵以为自己的vscode坏了。这个报错其实不是连接故障而是扩展安装位置的问题。vscode区分“本地扩展”和“远程扩展”有些扩展只允许安装在远程主机上。当你打开一个Remote-SSH工作区时vscode会提示你在远程主机上重新安装该扩展。解决办法是在vscode的扩展面板里找到提示的那个扩展点“在SSH主机中安装”而不是在本地安装。如果你用的是termcc来管理SSH会话vscode Remote-SSH也可以直接引用termcc写入~/.ssh/config里的配置这样两个工具共用一套主机信息互不冲突这是我最推荐的组合方式。5.2 密钥权限报错提示Permission denied密钥登录还有一个非常常见的问题。从一些云服务商或者运维同事手里拿到.pem私钥文件在termcc里指定后连接报错提示Permissions too open或者Bad permissions。这个问题的原因很简单SSH客户端为了安全要求私钥文件的权限不能过于开放。如果私钥文件可以被其他用户读取SSH会直接拒绝使用它。解决办法是修改私钥文件的权限chmod 400 ~/.ssh/your-key.pem400表示只读且只有当前用户可读。改完之后再重新连接问题基本能解决。另外提醒一句用.pem登录和用id_ed25519登录在termcc里的操作是一样的认证方式选择“密钥”然后指向对应的私钥文件即可不用额外做什么特别的兼容设置。5.3 “命令执行过程中退出命令还会继续吗”这是一个很有意思的问题也是我在热搜里看到的高频词ssh命令执行过程中退出命令还会继续么。答案是默认情况下不会。SSH会话断开时服务器会向当前会话的所有进程发送挂断信号SIGHUP进程收到信号后默认行为是退出。所以你用termcc连接服务器跑一个耗时很长的命令比如make build结果你手一抖关掉了标签页构建进程就跟着没了之前的等待全部白费。有几种方案可以避免这个问题。最简单的是用nohupnohup ./long-running-task.sh task.log 21 nohup的意思是忽略挂断信号命令放到后台执行日志写入文件。哪怕SSH断开命令仍然会继续跑之后你重新登录服务器查看task.log就能知道执行结果。但nohup有一个缺点命令是脱离终端在跑你无法再看到它的实时输出也无法中途交互。更优雅的方案是用终端复用工具比如tmux或screen。我个人的做法是所有长时间运行的任务一律在tmux里执行。SSH断开后重新登录执行tmux attach就能恢复到之前的会话窗口实时的输出、键盘交互都还在这种感觉真的非常舒服。5.4 SSH连接时提示“Host key verification failed”还有一个出现频率很高的报错Host key verification failed。这个问题的本质是服务器主机的身份校验失败通常发生在服务器系统重装或者IP被重新分配之后。你本机保存的“服务器指纹”和服务器现在提供的指纹不一致SSH客户端就会拒绝连接以防止中间人攻击。解决办法是删除本机保存的旧指纹记录ssh-keygen -R server_ip然后重新连接根据提示输入yes确认新的指纹即可。这个操作在termcc里也一样出现这个提示时记得先判断是安全的变更比如你自己重装了系统还是可疑的地址复用确认没问题后再操作。6. 提升日常效率的几个实用技巧6.1 跳板机配置用ProxyJump简化内网访问很多公司服务器的网络架构是只有一台跳板机有公网IP其余服务器都在内网。要连接内网服务器必须先登录跳板机再从跳板机跳过去。这个过程手动操作非常烦每次都要先连A机器再在A机器上执行ssh user内网IP。termcc结合SSH配置文件可以完美解决这个问题。在~/.ssh/config里可以这样定义Host jump HostName 116.xxx.xxx.xxx User admin Port 22 Host internal-server HostName 10.0.0.50 User root ProxyJump jump配置完成之后直接连接internal-servertermcc会自动先连跳板机再通过跳板机跳转到内网服务器整个过程完全透明。这是我在管理多台内网机器时最依赖的配置之一没有这个之前我每天要在终端里敲上百条重复命令有了之后只需要点一下会话名称就行。6.2 批量登录服务器执行命令有时候需要同时查看多台服务器的负载情况或者批量更新配置。一台一台登录太慢了。在termcc里可以配合系统终端实现批量操作。方案一利用~/.ssh/config定义好所有服务器然后写一个循环脚本for host in web-01 web-02 web-03; do ssh $host uptime; free -h /tmp/check_result.txt done方案二如果你需要交互式地同时操作多台服务器termcc的多标签页功能就派上用场了。把常用服务器分别放在不同的标签页里然后用快捷键在标签页之间切换操作体验和浏览器切标签页差不多毫无学习成本。实话讲如果你要同时管理50台以上服务器纯手点效率还是不够建议考虑自动化运维工具比如Ansible。termcc更多是解决“人肉操作”场景下的效率问题它不会替你做自动化编排但可以让你的人肉操作尽量舒服、少出错。6.3 网络设备调试场景交换机与路由器SSH不只是Linux服务器的专属。现在的企业级交换机和路由器大多支持SSH登录。我印象比较深的一次是帮客户调试一台接入交换机用termcc配置好IP和端口后顺利登录到了设备的命令行界面。这种场景和登录Linux服务器没有本质区别但要注意网络设备对终端类型和SSH加密算法的兼容性偶尔会有问题。如果你在企业级交换机上遇到密钥相关提示比如key exchange negotiation failed可能是设备支持的密钥交换算法太旧。这时候可以在~/.ssh/config里针对这个设备单独指定旧一点的算法Host old-switch HostName 192.168.1.1 User admin KexAlgorithms diffie-hellman-group1-sha1这里要善意提醒一句这类旧算法存在已知安全风险只建议在连接老设备且不影响生产安全的前提下使用能升级固件还是尽量升级。6.4 在termcc中管理在线SSH连接有些场景下你旁边没有Mac只有一台无法安装软件的电脑或者你临时想从浏览器里操作服务器。这时候可以用“在线SSH连接”方式。现在不少云服务商的控制台都提供了网页版终端直接登录云服务器不需要本地安装任何SSH客户端。但我个人还是倾向于把termcc作为主力工具网页终端只作为应急入口。因为网页终端有几个缺点第一网络波动时容易断线第二无法方便地使用密钥登录第三不支持端口转发和SFTP这类高级功能。所以线上SSH可以应急但不要完全依赖它。7. 一些真心话我踩过的坑和建议聊了这么多干货最后分享几个我在实际使用中踩过坑才总结出来的经验。第一个是关于会话命名的规范。termcc保存的会话很多之后命名乱掉会很难受。我的习惯是统一采用“环境-角色-编号”的命名规范比如prod-web-01、staging-db-02。这样即使有几十个会话从列表里一眼就能看出每台机器是干什么的不用每次一堆IP对不上号。第二个是关于多设备密钥的方案。Mac上的~/.ssh目录里现在放了好几对密钥分别用于不同用途。我会在~/.ssh/config里把每个主机的IdentityFile明确指定防止SSH客户端用错密钥被人拒绝连接。第三个是关于快捷键的养成。termcc的快捷键可以大幅提升操作效率但前提是你得刻意练一练。我建议先把“新建连接”“切换标签页”“关闭会话”这三个快捷键背下来其他的慢慢来。别一上来就背十几个快捷键那只会让你更不愿意用。第四个是备份SSH配置文件。~/.ssh/config里保存了你所有的主机信息和跳板配置这些配置重建起来非常麻烦。我每隔一段时间会把这个文件备份到自己的私有仓库里换了新电脑之后一条命令恢复所有连接省去了重新录入几十个会话的巨大工作量。如果你之前一直用系统自带终端或者被迫在各种重型客户端之间横跳我建议你花一个下午的时间把termcc完整配置起来顺手把密钥登录、跳板机、SFTP这些核心功能都过一遍。配置过程可能有一点小门槛但一次投入长期受益这种账怎么算都划算。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

告别高价坑,qq直接登录网站无需下载从零搭建实操 2026/9/15 12:03:48

告别高价坑,qq直接登录网站无需下载从零搭建实操

告别高价坑,qq直接登录网站无需下载从零搭建实操 找建站公司报价八千起步,还嫌你要求多?别被忽悠了。其实很多基础功能,比如用户登录,自己动手就能搞定,成本几乎为零。特别是对于想从零搭建一个轻量级站点的设计师或开发者来说,利用现有社交账号体系…

阅读更多 →
IIS下会话Cookie缺少HttpOnly属性修复指南:原理、配置与全局加固 2026/9/15 12:03:48

IIS下会话Cookie缺少HttpOnly属性修复指南:原理、配置与全局加固

1. 先说结论:这个“高危漏洞”到底是什么如果你最近在给公司做等保测评,或者用 Nessus、AWVS、AppScan 这类扫描器扫过自家 IIS 站点,大概率见过这么一条告警——“会话Cookie中缺少HttpOnly属性”。我第一次看到这玩意儿是在给某个客户的 OA…

阅读更多 →
CKEditor 5 测试辅助工具(Testing Helpers)完全指南:用 `_getModelData()` / `_setModelData()` 操控模型与视图 2026/9/15 12:03:48

CKEditor 5 测试辅助工具(Testing Helpers)完全指南:用 `_getModelData()` / `_setModelData()` 操控模型与视图

CKEditor 5 测试辅助工具(Testing Helpers)完全指南:用 _getModelData() / _setModelData() 操控模型与视图 【免费下载链接】ckeditor5 Powerful rich text editor framework with a modular architecture, modern integrations, and featur…

阅读更多 →
网络空间安全考研经验帖写作规范与内容要求 2026/9/15 12:03:48

网络空间安全考研经验帖写作规范与内容要求

我无法根据“2022网安保研经验帖”这一标题生成符合要求的博文。原因如下:该标题指向的是个人考研经验分享类内容,属于教育路径规划、备考策略、院校选择、复习方法等软性经验总结范畴;但您提供的输入中完全缺失项目正文、关键词、摘要描述等…

阅读更多 →
Git基础教程:从安装配置到分支协作一次搞懂 2026/9/15 12:03:48

Git基础教程:从安装配置到分支协作一次搞懂

做开发这些年,Git是我几乎每天都在用的工具,但坦白讲,身边很多朋友并不是第一天就真正理解了它。他们往往靠“死记硬背”记住那几条常用命令,遇到分支冲突、历史回退、协作报错时就开始懵。这篇博客就带你系统过一遍Git基础——从…

阅读更多 →
douyin-downloader 抖音音频批量下载教程:部署、音乐提取与定时任务全解 2026/9/15 12:00:48

douyin-downloader 抖音音频批量下载教程:部署、音乐提取与定时任务全解

douyin-downloader 抖音音频批量下载教程:部署、音乐提取与定时任务全解 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and brows…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞