平时连服务器,最烦的就是在终端和文件工具之间来回切换:终端用 Xshell 或 Tabby,传文件又得打开 FileZilla,偶尔还要开一个网页版控制台查状态。Electerm 这个跨平台工具把 SSH 终端和 SFTP 文件传输合在同一个界面里,折腾完服务器之后我基本把它当主力客户端用了。这篇按我自己的使用流程,把下载安装、创建连接、密钥登录、文件传输、常见连接故障排查全部过一遍,适合刚准备接入 Electerm 的读者,也适合已经在用但想解决认证失败、连不上、断连丢进程这类问题的老手。
1. 为什么把主力 SSH 客户端换成 Electerm
1.1 SSH 工具选型到底在选什么
很多人在选 SSH 工具时只关注“连得上连不上”,但实际上日常运维中,真正决定效率的是连接稳定、密钥管理、文件传输、多会话切换这些细节。我见过有人同时开着三个工具处理一台服务器:一个终端窗口敲命令、一个 SFTP 窗口拖文件、一个记事本记操作清单,手忙脚乱不说,还容易搞混目录。
我自己的选型标准比较朴素:第一,协议兼容性要稳,SSH、SFTP、Telnet 都要支持,不能今天连 Linux 服务器,明天连交换机就要换工具;第二,文件传输最好内置,不用单独挂一个 SFTP 客户端;第三,会话管理要顺手,开多台服务器时分屏、标签、书签一个都不能少;第四,跨平台,工作机是 Windows,家里是 macOS,换系统后配置能迁移。
Electerm 恰好在这几个维度上都踩中了。它是 GitHub 上的开源项目,Windows、macOS、Linux 通吃,SSH 终端、SFTP、书签、待办事项一应俱全。开箱即用的体验比一堆老牌工具更贴近现代使用习惯,这也是我把它从“试一下”变成“主力”的原因。
1.2 Electerm 与 Xshell、FinalShell、Tabby 的横向对比
Xshell 在 Windows 运维圈的地位不用多说,但它只支持 Windows,换到 Mac 就抓瞎。FinalShell 集成了监控和文件管理,界面信息密度比较高,免费版够用,但偶尔会被杀毒软件误报,而且整个工具偏重,低配机跑起来有点吃力。Tabby 界面现代、插件生态丰富,但文件传输入口藏得深,有朋友第一次用它找半天没看到 SFTP 面板。
Electerm 的优势在于把终端和文件管理平级排布,连接服务器后左侧是远程文件树,右侧是终端,鼠标拖拽就能上传下载。对比下来,它的核心竞争力其实是“轻量且什么都带”,不需要折腾插件就能完成绝大多数运维动作。
| 工具 | 跨平台 | 内置 SFTP | 分屏/多标签 | 待办事项 | 开源 |
|---|---|---|---|---|---|
| Xshell | 仅 Windows | 需配套 Xftp | 支持 | 无 | 否 |
| FinalShell | 支持 | 支持 | 支持 | 无 | 部分 |
| Tabby | 支持 | 需配置 | 支持 | 无 | 是 |
| Electerm | 支持 | 支持 | 支持 | 有 | 是 |
Electerm 这个待办事项功能在运维场景里其实挺实用,记到服务器维护周期、误删文件后的恢复步骤,单开一个面板就能边做事边记,省得再开笔记软件。
2. 从下载到第一次连上远程服务器
2.1 下载安装与版本选择
Electerm 的安装包在 GitHub Releases 页面能直接找到,Windows 版本有 exe 安装包和免安装压缩包两种。我建议用安装包,因为右键菜单和文件关联会注册得更完整,后续用起来顺手。macOS 版本用 dmg 或者通过 Homebrew 装都可以。这里提醒一句,它的正式版更新频率比较快,如果不是为了新功能,不必每个版本都追,挑一个稳定版用着就行。
安装完第一次启动,界面默认是全英文,在菜单栏的 Settings 里能找到语言选项切到中文。界面结构比较简单:左侧是书签导航,中间是会话窗口,右侧的侧边栏可以切出文件、历史记录和待办事项。初次使用者不需要改太多配置,保持默认就能开始建连接。
2.2 新建连接:主机、端口、认证方式
首次连接服务器的流程非常直观,别被那一堆按钮吓住,其实只要填对几个关键字段。
我按自己的习惯把步骤拆出来:
- 点击窗口左上角的“新建”按钮,选择“书签”,进入连接配置页。
- 主机地址填 IP 或域名,比如 192.168.1.100 或 server.example.com,端口保持默认的 22,除非服务器改了端口。
- 用户名填登录账号,这里最容易出错:很多云主机默认创建的是 ubuntu、centos、ecs-user 这类账户,不是 root,填错会直接认证失败。
- 认证方式二选一:选密码就直接输入密码;选私钥则在“私钥”栏选择本地密钥文件。
- 点击“保存”,然后在书签列表里双击这条记录发起连接。
连接成功后,窗口右侧会进入交互终端,输入命令即可。第一次连接时如果出现主机密钥确认提示,比对一下服务器指纹合理再点确认,这是 SSH 防止中间人攻击的基础机制,别图快直接跳过。
2.3 三种连接方式怎么选
Electerm 支持密码登录、私钥登录、跳板机代理三种方式,实际使用中覆盖了绝大多数运维场景。
密码登录最省事,但不推荐在公网服务器上长期用,暴力破解的风险一直都在。私钥登录是主流方案,密钥对相当于一把私人钥匙,安全性和便捷性兼顾。跳板机场景则是在内外网隔离的网络中,通过一台可访问的中转服务器连接到目标机器,Electerm 的书签里自带代理设置,不需要额外开隧道工具。
我个人强烈建议:任何一台长期使用的服务器都换成密钥登录。理由很简单,密码可能被爆破、被泄露,而密钥只要保管好私钥,服务器端公钥没办法反推私钥。后面的章节我会专门讲密钥怎么配。
3. 连接之前先搞定密钥登录
3.1 生成密钥:推荐 ed25519 而不是 rsa
绕不开的环节是生成密钥对。现在新系统上首选 ed25519 算法,它的密钥长度短、生成速度快、安全性有保证,老旧的 rsa 4096 位虽然也能用,但没必要再坚持。
在 Windows 的 PowerShell、macOS 的终端或者 Linux 终端里敲这条命令就行:
ssh-keygen -t ed25519 -C "your_email@example.com"命令执行后会问文件保存位置,按回车默认存到用户目录的 .ssh 文件夹;然后提示输入私钥口令 passphrase,这里可以留空,也可以设置一句口令。我建议内网跳板机或者个人电脑上的私钥可以留空,工作电脑上最好加上口令,虽然连接时每次要输一次,但多了一道保险,私钥文件即使丢了别人也无法直接用。
生成完成后会得到两个文件:id_ed25519 是私钥,留在本地;id_ed25519.pub 是公钥,内容可以放心发给服务器管理员或者追加到服务器上。
3.2 推送公钥到服务器
拿到公钥内容,有两种稳妥方式把它装到服务器。第一种是服务器端没有特殊限制且支持 ssh-copy-id 时,直接执行:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ipssh-copy-id 会把公钥追加到服务器对应用户的 ~/.ssh/authorized_keys 文件里,顺便修正权限。第二种方式简单粗暴:把 id_ed25519.pub 的内容手动复制到服务器的 ~/.ssh/authorized_keys 文件里,一行一个公钥。服务器上执行如下命令:
mkdir -p ~/.ssh echo "粘贴你的公钥内容" >> ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys权限这步不能省,如果 .ssh 文件夹或 authorized_keys 文件权限过宽,sshd 会直接忽略这个文件,表现出来就是密钥“明明配了却连不上”。
3.3 Electerm 里配置私钥连接
公钥注册到服务器后,回到 Electerm 编辑之前的书签,把认证方式从密码切换到私钥,在私钥栏里选中本地生成的 id_ed25519 文件,保存后重新连接。连接时会读取本地私钥完成认证,不再需要输入密码。
这套配置完成后,建议顺手验证一次禁用密码登录的效果。在服务器的 sshd_config 里设置:
PasswordAuthentication no PermitRootLogin prohibit-password改完重启 sshd 服务。这样服务器不再接受纯密码认证,即使密码泄露,没有私钥也无法远程登录。相对地,Electerm 端也不需要再做任何调整,密钥认证不受影响。需要注意,改这个配置前务必确认密钥登录已经验证通过,否则手一抖把自己锁在外面就只能去控制台抢救了。
有人可能会问:如果公钥文件已经写进去了,还是提示认证失败怎么办?这个问题放到第 5 章排查部分,因为八成出在权限或用户名上。
4. 日常高频操作:终端、SFTP 与多会话编排
4.1 内置 SFTP:终端和文件管理同屏操作
连接成功之后,左侧的文件面板会自动展开,显示的路径就是当前用户的家目录。这个布局带来的效率提升,用过的都知道:不需要再单独开一个 FileZilla,也不需要打开第二个软件去切换本地与远程目录。
上传时把本地文件直接拖到远程目录窗口,Electerm 会自动执行上传,右上角能看到进度条。下载时右键远程文件,选择“下载”,文件会落到本地默认下载目录。复制、改名、删除、新建目录这些基础操作,右键菜单里都有,和本地文件管理器几乎一样。
这里说一个调试技巧:线上修改代码前,先用 SFTP 把原文件下载到本地做备份,改坏了随时上传覆盖。以前我用纯终端工具,还得先敲 rz 再选文件,Electerm 把备份动作缩减成了两次右键。
4.2 多标签、分屏与批量操作
接手过的服务器多了之后,会话管理能力比终端模拟器本身更重要。Electerm 支持多标签同时打开,快捷键 Ctrl+T 新开标签,Ctrl+W 关闭标签。如果不想记住快捷键,直接点标签栏的加号也能打开新会话。
分屏模式适合同时操作多台机器的场景。比如升级服务时,经常需要一台测试机、一台生产机并排比对日志或配置文件,Electerm 的分屏模式能在一个窗口里同时展示两三个终端,任何一个分屏的连接信息都是独立的,互相不会串。批量操作服务器时,我习惯把命令先在单台机器上验证,再通过标签间复制粘贴到其他机器,避免手抖输错。
书签按项目分组也是个好习惯,Electerm 支持创建文件夹对书签分类。我按“云服务器”“办公内网”“交换机”分组,找连接的时候不用再翻历史记录。
4.3 代理与内网环境的连接
实际工作中经常遇到目标服务器不能直接从公网访问的情况,比如它只在办公内网、没有公网 IP,或者数据库端口没有对外开放。Electerm 在书签配置里提供了代理选项,支持配置一个中转地址,应用场景非常广:某台内网机器只开放了特定端口,你可以在能访问它的机器上开一个代理服务,Electerm 走这个代理直连目标。
配置方式在“书签”的“代理”栏里:选择代理类型,填入地址和端口。这里的代理解决的是内网互通问题,和云服务器的安全组放行是两个维度。需要注意,代理一旦配置错误,典型表现是连接卡在握手阶段或者直接提示超时,排查时先取消代理试试直连,就能快速定位问题是否出在代理配置上。
跟这个场景相关的一个高频误区是混淆了“代理”和“跳板机”:代理是在本地客户端配置一个可访问的中转,跳板机是先在服务器上登录再跳到下一台。Electerm 对跳板机场景的处理比较直接,你只需要建两个书签,第一个连接跳板机,第二个连接目标机,然后在第二个书签里配置代理指向跳板机地址和端口,这个方案我实测下来很稳。
5. 连接不上的时候,我是怎么排查的
5.1 认证失败:从日志到权限的排查路径
认证失败是 SSH 连接最高频的故障,网上问“ssh认证失败git”“树莓派ssh密码不对”这类问题的用户几乎都遇到过。我积累了一条比较固定的排查路径。
先确认用户名是否正确。很多云主机初始用户不是 root,而是 ubuntu、centos,或者云厂商定制的初始用户。密码正确但用户名不对,现象仍然是认证失败。
然后看到底是密码错还是私钥错。密码错误时,重启服务端 sshd 之后再次连接,系统日志会留下记录,Debian/Ubuntu 系看 /var/log/auth.log,CentOS/RHEL 系看 /var/log/secure,找到类似 Failed password for invalid user 的条目,确认不是服务器主动拒绝。
密钥认证失败时,重点看权限。服务器端 authorized_keys 文件权限必须是 600,.ssh 目录必须是 700,本地私钥文件权限在 Linux/macOS 下必须是 600 或 400,否则 OpenSSH 会以“permissions are too open”为由拒绝使用。Windows 上还容易出现私钥文件继承了整个用户目录的权限,需要用 icacls 或者右键属性把继承关掉,只保留当前用户完全控制。
查看日志的命令我一般这么用:
journalctl -u ssh -n 50如果看到 Authentication refused: bad ownership or modes,不要怀疑别的,按上面的权限规范重新 chmod 一遍,基本都能解决。
5.2 连接超时:端口、防火墙与监听地址
连不上的另一大类问题是连接超时。这里的排查思路要先区分“端口能通”和“SSH 能通”。ping 能通只说明主机在线,不说明 SSH 端口开放。
从本机测试端口是否可达:
nc -vz 192.168.1.100 22如果端口测试不通,要按顺序排查三层:云平台安全组是否放行了 22 端口入方向;本机防火墙 firewalld 或 ufw 是否放行;sshd 是否监听在所有网卡上。
sshd 只监听本地回环地址而外部无法连接的情况,通常可以在 sshd_config 里找到 ListenAddress 配置,应改为:
ListenAddress 0.0.0.0或者直接注释掉这一行,让服务监听所有地址。
有意思的是很多人改了防火墙规则以后才想起 sshd_config 里面还写死了一个旧监听地址,折腾半天连不上。如果你也遇到类似情况,优先看 sshd 当前的监听状态:
ss -tlnp | grep sshd见到 0.0.0.0:22 或 [::]:22 说明监听正常,接下来安心排查防火墙和安全组。
5.3 连接断开与进程退出
还有一个非常典型的问题词条:“通过ssh连接服务器断开以后node服务会停”。说句实话,这不算 SSH 的 bug,而是进程管理常识。用 SSH 终端在前台执行 node server.js,一旦连接断开,终端会话退出时会给子进程发挂断信号,node 进程自然就停了。
解决思路有两个方向。简单粗暴的临时方案是用 nohup 加日志重定向:
nohup node server.js > server.log 2>&1 &这样即使连接断开,进程也不会收到挂断信号。更好的方案是用 tmux 或 screen 这类会话复用工具,把任务放进独立会话里,断开后重新连接还能接回现场继续看输出。我现在的习惯是:任何需要长时间跑的任务,一律先开一个 tmux 会话,在里面跑,绝不直接裸跑在前台。
Electerm 本身也考虑过断线的问题,它的终端连接在一定时间内没有数据交互会静默断开。如果你想保持长连接,可以在系统配置文件里给 ssh 加两个参数:ServerAliveInterval 60 和 ServerAliveCountMax 3,让客户端每隔 60 秒发一个保活包;服务器端则在 sshd_config 里设置 ClientAliveInterval 60 和 ClientAliveCountMax 3,两边任意一边配置生效都能减少空闲断开的情况。
5.4 高频问题速查表
最后整理一个速查表,覆盖我在群里见过的高频故障,方便大家直接对照排查。
| 现象 | 常见原因 | 检查要点 |
|---|---|---|
| Permission denied (publickey,password) | 用户名错误或密钥权限过宽 | 核对用户名、chmod 600 私钥、服务器 authorized_keys 权限 |
| Host key verification failed | 服务器重装后指纹变化 | 本地删除 known_hosts 中旧记录,ssh-keygen -R 服务器地址 |
| Connection refused | 22 端口未监听或防火墙未放行 | ss -tlnp 查监听、firewalld/ufw 查放行、云安全组查规则 |
| Connection timed out | 安全组未放行或网络不通 | ping 主机、nc 测端口、确认 IP 没有变化 |
| 连接后几秒被断开 | sshd 配置了不兼容策略 | 查看 auth 日志,检查 DenyUsers/AllowUsers |
| 密码正确但一直让输密码 | 服务端加密算法不兼容 | 升级 OpenSSH 客户端,或检查 sshd_config 的 KexAlgorithms |
| Windows 下私钥权限错误 | 文件继承了过多 ACL 权限 | 用 icacls 或属性对话框移除继承,仅保留当前用户 |
| 服务器很忙,连接挂起 | 并发连接数或 MaxStartups 限制 | 检查 sshd 日志、调整 MaxStartups 参数 |
6. 一些真正提升效率的 Electerm 小技巧
Electerm 的全局搜索功能值得单独提一次。多台服务器上书签数量变多以后,靠肉眼翻列表效率太低,直接在全局搜索里输入关键词,能同时过滤书签和本地历史记录,快速跳到对应的连接。配合书签分组使用,效果更明显。
Electerm 的待办事项也很有意思,很多终端工具没有这个设计。我在服务器维护周期比较长的时候,会把“检查磁盘占用”“更新证书”“备份数据库”写成待办事项列表,放在侧边栏里,边操作边勾选。跨设备场景下,如果多台电脑都在使用 Electerm,可以通过它内置的数据同步功能把书签和待办事项带到另一台设备上,注意妥善保管数据密码。
还有一个颜值效率两手抓的细节:Electerm 的字体渲染做得比较顺滑,建议在设置里把终端字体调成带等宽特性的编程字体,比如 JetBrains Mono 或者 Cascadia Code。中文乱码问题通常也能通过把编码调整成 UTF-8 解决,遇到中文注释显示乱码时先检查这里,不用急着改服务器语言环境。
我在实际使用中最深的一点体会是:Electerm 的价值不在一两个炫酷功能,而是把一个运维人员日常最高频的操作——连服务器、传文件、记任务——收敛到一个界面里。与其在每个环节都换一个工具,不如让工具链少一点断裂。如果你是刚从 Xshell 或者裸终端切换过来的用户,建议先花五分钟把前两章的基础连接流程走一遍,再按第三章把密钥配上,之后的使用体验会顺畅很多。