简介SecureCRT作为一款经典的远程连接客户端软件主要面向需要登录Linux服务器、网络交换机或路由器执行命令行操作的中高级运维与开发人员支持SSH、Telnet等常见协议兼容多标签工作方式。压缩包提供中文汉化绿色版免安装即可启动符合即时使用、绿色便携的习惯无需修改系统注册表解决了原版界面语言障碍与授权注册繁琐的问题。包体约30.36MB区分32位与64位版本分别内置终端会话和SFTP文件传输的便携启动程序所有会话、密钥、书签等配置统一存放于Data目录便于整体打包备份、跨设备迁移、多电脑间同步以及日常整理也可直接拷入U盘随身携带。目前已有1786人学习下载。实际投入日常使用时读者可获得开箱即用的中文界面、稳定的SSH2/SFTP连接能力以及会话标签、密钥登录、端口转发等实用特性适合日常服务器维护、网络排障与协议学习等多种场景重装系统后也能快速恢复原有连接配置对提升远程运维效率有明显帮助。1. 一台电脑连几十台设备SecureCRT 解决的不是连接是会话管理这盘账搞运维、做嵌入式、带实验项目的同学应该都体会过这个场景手里七八台服务器A 机看日志、B 机上服务、C 机改配置终端窗口开了一排每个窗口都得重新敲 ssh 命令、输用户名、找密码。搜 crt ssh、终端工具、会话管理的人基本就是这个诉求——不是连不上是管理不过来。SecureCRT 这类终端客户端核心价值就是把散落的 SSH、Telnet、串口会话收拢成一套可保存、可分类、可脚本化的入口双击就能进设备。它比 Windows 自带 Terminal 多的不是传输层那点能力而是对高频操作的整理把设备存成会话、把认证方式固定、把重复命令做成按钮和脚本。你手上这份中文汉化绿色版和官方原版在功能逻辑上没有区别只是语言包和默认参数的不同所以我下面讲的所有配置路径照着做就行。2. 新建会话到安全认证把 SSH 连接参数吃透2.1 新建会话前先核对五个字段别急着点连接很多第一次接触这类工具的人拿到软件就点 Quick Connect输入 IP、用户名、密码连上去就完事。能通但下一次还是得重新输。真正该走的路径是 File → Connect → New Session在弹出框里建一个带名字的会话条目之后每次双击就进。新建会话时最关键的五个字段按顺序核对字段推荐值说明ProtocolSSH2默认就是它不要选 SSH1旧协议有安全缺陷Hostname设备 IP 或域名端口不写默认 22如果改了端口在这里填Port22除非服务端改过监听端口Username登录用户名可以留空连接时再输AuthenticationPublicKey / Password按你的认证环境选见 2.2协议选 SSH2 而不是 Telnet原因很直白Telnet 的账号密码和所有流量都是明文在机房内部还能用跨网段、走公网就等着被截。SSH2 在传输层加密主机密钥校验也能防中间人。现在绝大多数 Linux 发行版默认不带 Telnet 服务端了没必要给自己找麻烦。参数填完之后建议在 Connect 按钮旁边找到 Save session 选项把当前配置落盘。这一步的价值在换电脑时最明显配置目录一拷所有设备条目带过去不用重新录入。后面第 5 章会具体讲配置备份的坑。2.2 公钥认证配置把密码弹窗这件事一次根除密码登录最大的问题不是慢而是每台设备一个密码记不住。常见做法是切到公钥认证你自己生成一对密钥把公钥放到服务器的 authorized_keys 里以后连接时客户端出示私钥签名服务端验签通过就直接进全程不弹密码框。先在本地生成密钥对我一般用 RSA 4096 或者 ed25519后者更短更快OpenSSH 7.0 以上都支持# 生成 ed25519 密钥对-C 是注释标注用途方便管理 ssh-keygen -t ed25519 -C dev-$(hostname) -f ~/.ssh/id_ed25519 -N 命令里-t指定算法-f指定私钥存放路径-N 表示私钥不设口令这样 SecureCRT 连接时不用再输一次私钥密码。如果对安全要求高可以去掉-N 但每次连接要额外输入私钥口令看你的取舍。公钥上传到服务器最简单的做法是 ssh-copy-id没有这个命令的手动追加# 把公钥内容追加到目标机对应用户的 authorized_keys 文件里 ssh-copy-id -i ~/.ssh/id_ed25519.pub user192.168.1.10 # 手动方式cat id_ed25519.pub ~/.ssh/authorized_keys然后回到 SecureCRT 的会话属性Session Options → Connection → Authentication勾选 PublicKey下面选择 Private Key 文件指向刚才生成的私钥路径。这里有个细节SecureCRT 默认只认自己的密钥格式新版支持 OpenSSH 生成的私钥但如果你拿到的是 PuTTY 的 .ppk 文件得先用工具转成 OpenSSH 格式否则导入时报格式错误。判断标准很简单私钥文件第一行是-----BEGIN OPENSSH PRIVATE KEY-----就能直接用凡是PuTTY-User-Key-File开头的都需要转换。2.3 终端仿真与字符集为什么你的中文全是方块连接本身通了屏幕上中文乱码这问题几乎每个人都会遇到一次。大部分情况下不是 SSH 传输问题而是终端仿真和字符集不匹配。SecureCRT 里两个地方决定显示效果Terminal 仿真类型和字符编码。仿真类型在 Session Options → Terminal → Emulation默认是 VT100 或 xterm。连接 Linux 服务器建议选 xterm颜色渲染和按键映射最贴近现代终端。连接老式网络设备或者串口有时候要切到 VT100否则方向键和 Tab 键不响应。字符编码在 Session Options → Terminal → Appearance → Character Encoding连 Linux 选 UTF-8连 Windows 下跑的中文服务可能要用 GB2312 或 GBK。记一条规律服务器 locale 是 UTF-8客户端就选 UTF-8服务端输出 GBK 编码你选 UTF-8 必然是乱码。判断服务端编码登录后执行echo $LANG看到zh_CN.UTF-8就是 UTF-8看到 GBK 相关字样就是 GB2312。还有一种翻车场景SecureCRT 本身显示正常但用 SFTP 传到 Windows 的文件名是乱码——那是 Windows 资源管理器解码问题和终端没关系。别在这上面浪费太多时间文件内容没乱就行。3. 会话组织和跳板机几十台设备的登录信息整理术3.1 会话文件夹与克隆新设备接入五分钟搞定设备多了以后会话列表就是纯文本列表找设备靠滚轮显然不现实。SecureCRT 的会话树支持像文件目录一样建文件夹我一般按项目 / 区域 / 角色三层分机房 A → Web 集群 → web-01、web-02。选中一个会话右键选 Clone Session改个主机名和备注就是新设备条目不用从头填参数。这里有个省时间的习惯先建好一个模板会话所有公共参数——终端仿真 xterm、编码 UTF-8、字体大小、日志目录、按钮栏——都配好然后 Clone 若干份每份只改 Hostname 和 Username。模板会话本身不要用来连接就放在会话树最顶部当模板用。这样新设备接入时从模板复制一个改 IP、存盘、双击连整个过程不到五分钟。会话文件夹管理不需要额外配置右键直接在会话树里新建文件夹拖动会话条目就能归入。如果你想批量调整一堆会话的公共参数比如把端口从 22 改成 2222不用一个个会话打开属性改可以直接操作会话配置文件见 3.3。3.2 通过跳板机登录内网防火墙代理配置的完整路径实际工作里经常遇到场景公司网络里办公电脑不能直接访问生产内网必须先登录一台跳板机再从跳板机跳到目标设备。SecureCRT 原生支持这种代理连接不需要手动开两个窗口。配置路径Session Options → Connection → Firewall → Edit新建一条规则类型选 SSH 代理有的版本叫 Proxy。填跳板机地址、端口、用户名、认证方式。保存后回到会话属性Firewall 下拉框选中刚才建的规则。连接目标会话时SecureCRT 会先自动建立到跳板机的连接然后通过它再连目标机整个过程在你看来就是双击一个会话的事。另一种做法是本地端口转发适合访问内网里的数据库或 HTTP 服务。给一个命令行的等价操作便于你理解 SecureCRT 内部干了什么# -L 把本地 3306 端口转发到内网 MySQL 的 3306-N 不执行命令-f 后台运行 ssh -L 3306:192.168.1.20:3306 user192.168.1.10 -N -f这个命令执行后本机连接127.0.0.1:3306等价于连接内网192.168.1.20:3306。SecureCRT 的防火墙代理本质上就是这个隧道逻辑但把隧道生命周期绑定到了会话上断开会话转发自动结束。要注意的是内网地址必须是跳板机视角能到达的地址不是本机视角——你拿本机 IP 地址填进去肯定转发不了。3.3 批量修改会话参数直接改配置文件比 GUI 逐条改快当你维护了四五十个会话突然要全部改端口或者换用户名GUI 逐条改会改到怀疑人生。SecureCRT 的会话配置落盘是独立的配置文件每个会话一条 .ini 记录配置文件用 UTF-16 LE 编码存储Windows 下记事本打开会看到一串串NUL字符这是正常现象别以为是文件坏了。这类配置文件适合用脚本来改。我写过一个批量把端口从 22 换成 2222 的小脚本思路是遍历会话目录下所有 .ini 文件做文本替换后原编码回写import os # 会话目录通常在 AppData 下具体路径见会话管理器里的配置目录 sess_dir os.path.expandvars(r%APPDATA%\VanDyke\Config\Sessions) changed [] for fn in os.listdir(sess_dir): if not fn.endswith(.ini): continue path os.path.join(sess_dir, fn) # SecureCRT 的会话配置是 UTF-16 LE 编码 with open(path, r, encodingutf-16) as f: content f.read() new_content content.replace(Port22, Port2222) if new_content ! content: with open(path, w, encodingutf-16) as f: f.write(new_content) changed.append(fn) print(已修改:, changed)这个脚本要改参数核心就是替换Port22这类键值。注意两点一是回写必须用utf-16编码用默认utf-8写回去文件就废了二是改之前备份整个 Sessions 目录改坏了能退回去。跑批前先挑一个 .ini 文件打开确认字段名不同版本字段名可能有差异以实际文件内容为准。4. 登录自动化与按钮栏把重复操作压缩成一个回车4.1 用 Python 脚本代替手工敲命令WaitForString 的核心用法SecureCRT 7 以上内置脚本引擎支持 Python这让登录后自动执行一串命令变成了一件极其顺手的事。脚本能访问当前会话、标签页、窗口然后模拟键盘输入、做条件等待、逐行读输出。常见的登录场景连上设备、自动进入工作目录、加载环境变量、打印运行状态全部自动化。下面是一个最基础的脚本连接后自动发命令并抓取输出# 将脚本绑定到按钮栏或会话登录动作后连接建立时会自动执行 import time def main(): # 发送一条命令并等待提示符返回 crt.Screen.Send(cd /opt/app ls -l\n) crt.Screen.WaitForString(]# ) # 再发一条命令确认服务状态 crt.Screen.Send(systemctl status nginx --no-pager\n) crt.Screen.WaitForString(]# ) main()这里crt是 SecureCRT 注入的全局对象不用导入。Screen.Send模拟键盘输入字符串末尾必须有换行符\n否则命令不会执行。WaitForString是脚本里最重要的函数它阻塞等待屏幕输出中出现指定字符串才继续往下走比crt.Sleep可靠得多——固定 sleep 1 秒在慢机器上经常不够WaitForString 按输出判断服务器再慢也能等。写脚本时有个注意点WaitForString等待的字符串要和当前 shell 提示符严格匹配。如果 prompt 是[rootlocalhost ~]#你等一个]$就会超时。调试阶段先把提示符打印出来看脚本里加一段crt.Screen.ReadString(0, 1000)看看实际输出比盲猜快得多。4.2 按钮栏把高频命令变成一键操作自动化脚本的轻量替代方案是按钮栏。View → Button Bar 打开右键按钮栏选 Customize能看到一排预设按钮和命令编辑框。按钮可以绑定一段静态命令字符串也可以绑定编写好的 Python 脚本文件。我一般这样规划按钮按钮名绑定内容适用场景磁盘df -h; free -m登录后快速看资源占用日志tail -f /var/log/messages盯实时日志清缓存sync; echo 3 /proc/sys/vm/drop_caches测性能前清理缓存批量脚本调用 4.3 的 Python 脚本循环处理多台机器右键随便一个按钮可以修改它的命令、图标和发送方式。发送方式选 Send String to Tab发送到当前标签页按钮点击后在当前光标位置执行。这里的细节是按钮绑定的命令里换行要写成\n或直接用界面上的;分隔多个命令不要用一条条连太长按钮栏空间就那么大太长容易点错。4.3 循环处理多台设备在脚本里控制会话生命周期按钮栏最适合单台设备操作如果你要对五台机器同时执行同一条命令手点五个标签页再粘贴命令效率太低。用脚本循环打开新标签页逐个发命令最后统一收输出# 循环打开多个会话标签页发送命令并自动关闭 def main(): # 传入已命名会话连接成功后发送命令 sessions [web-01, web-02, db-01] for name in sessions: tab crt.Session.ConnectInTab(/S name) tab.Screen.Send(uptime\n) # 等待输出给足超时时间 tab.Screen.WaitForString(]# , 10) tab.Session.Disconnect() main()ConnectInTab是脚本里打开新标签页的标准入口/S后面跟的是会话名必须是会话树里存在的条目。脚本最后一个循环做的是发命令、等输出、断开不会污染你的工作窗口。实际用的时候建议把uptime换成你要批量执行的命令输出结果如果要留存在循环里把每台机器的输出追加写入本地日志文件。这里有个常被忽略点ConnectInTab 的/S参数必须和会话名完全一致包含空格的话整个名称用引号包起来。会话名变了脚本就失效所以脚本要么绑定到模板会话要么每次用前核对会话名。5. 避坑与排查连接失败、乱码、会话丢失的五个现场5.1 SSH 连接超时报 Connection timed out现象新建会话点连接等十几秒后提示超时SSH 端口一直无响应。原因有三类目标 IP 不通、防火墙挡了 22 端口、服务端 sshd 没起来。解决思路分三层排查先ping看网络通不通再telnet 目标IP 22看端口通不通最后如果都在跳板机环境里就要检查代理连接配置的 Firewall 规则是否写对跳板机地址。ping 不通是路由问题telnet 连不上 22 是防火墙或服务问题。还有个玄学点有些云厂商安全组默认只开 80/44322 没放行这种是安全组策略问题跟本机无关。5.2 密码没错但反复弹密码框现象公钥认证配置好之后连接仍然弹密码框输入正确密码进是能进但每次连接都要输。原因会话属性里 Authentication 同时勾选了 Password 和 PublicKeySecureCRT 按顺序尝试先请求密码认证实际行为是弹框让你输密码。解决把认证方式列表里删掉 Password只留 PublicKey顺序也会影响——把 PublicKey 拖到最上面优先尝试密钥。另一个相关原因是私钥文件路径写错或者权限不对Windows 下私钥文件如果被安全软件锁了读取失败也会回退到密码认证。处理方式是把私钥拷贝到自定义目录避开权限问题。5.3 换台电脑后会话全部丢失现象换新电脑装好软件打开会话管理器一个条目都没了以为白配了。原因SecureCRT 默认把所有会话存在本地 AppData 配置目录装软件不会自动同步这部分数据。解决去原电脑的配置目录找到 Sessions 文件夹整体拷贝放到新电脑对应位置的相同路径。判断对你配置目录的方法在会话管理器里点开一个会话的属性看配置文件路径。迁移后确认编码没改变如果是从旧版导出再导入会话里的认证信息可能会丢需要重新输入一遍密码。从那以后我每次换电脑第一件事就是备份整个 Config 目录不单独导出单个会话。5.4 脚本发送的命令带 ^M 换行符执行报错现象脚本里写crt.Screen.Send(ls\r\n)在 Linux 下执行命令没错但读到的 shell 历史记录里全是^M个别程序还报参数错误。原因\r\n是 Windows 行尾Linux shell 对这种输入一般还能容忍但传给某些程序做参数就会翻车。解决脚本里统一用\n不要用\r\n。如果已经有脚本犯了这个错在脚本代码里做一次清洗cmd.replace(\r, )再发送。这个坑最容易出现在从 Windows 记事本编辑脚本然后直接运行的场景记事本默认换行是 CRLF脚本内容本身带了\r发给远端就更乱了。建议代码编辑器统一设成 LF 换行。5.5 中文乱码在换了终端类型后更严重现象之前是少量方块切了仿真类型变成一大堆乱码甚至花屏。原因不同仿真类型对字符序列的解释不一样VT100 对 UTF-8 多字节字符支持很差。解决确认服务端 locale 后固定仿真为 xterm字符编码显式设 UTF-8不要用 Auto 检测模式。Auto 在某些老设备上会误判成 ISO-8859-1 之类。还有个办法SecureCRT 的 Session Options 里把 Display line drawing characters 关掉部分花屏问题是线绘图字符冲突导致不是编码问题。6. 进阶X11 转发与串口调试把 SecureCRT 用成万能控制台6.1 X11 转发让 Linux GUI 程序显示到 Windows 桌面有时候远程设备上要跑图形工具比如xclock、xeyes这种小工具验证环境或者老设备的图形配置界面。X11 转发可以把服务端的 GUI 显示到本地。先确认本地装了 X serverWindows 上装一个 Xming 或 VcXsrv在 SecureCRT 会话属性里找到 Connection → Port Forwarding勾选 Forward X11 data。连接后执行echo $DISPLAY如果输出localhost:10.0之类就说明转发生效了然后启动任何 GUI 程序就会弹到本地客户端桌面上。我实际用的场景是远程执行一个系统安装向导没有转发就得在纯字符界面里盲操作体验完全两个世界。6.2 串口会话调试交换机路由器 console 口的参数表SecureCRT 不只是 SSH 客户端它还带串口连接能力。嵌入式设备、交换机、路由器的 console 口调试很多时候现场没有额外串口工具SecureCRT 一个软件全干。新建会话时协议选 Serial会话选项里设置端口参数我一般直接记这张表参数常见值说明PortCOM3 / 设备管理器查Windows 下的串口号Baud rate9600 或 115200老设备多为 9600新设备 115200Data bits8几乎都是 8Stop bits1标准配置ParityNone几乎不校验Flow controlNone如果开流控可能导致输入卡顿串口连不上八成是波特率不对或者占用串口的程序没关。SecureCRT 连接串口前Windows 设备管理器里确认一下该 COM 口没有被其他工具占用否则提示 Access Denied。6.3 日志自动记录排查问题时的后悔药最后一个养成习惯的技巧给每个会话默认开日志记录。Session Options → Log File设置统一的日志目录文件名用时间戳变量自动命名。这样每次连接会话所有操作输出都自动落到本地文件。排查问题时直接翻日志比重新复现快得多。变量名如%Y-%m-%d_%H%M%S表示日期时间SessionName 表示会话名组合成D:\logs\%SessionName%_%YM%M%D_%H%M%S.log这种格式。从那以后我每次拿到新设备都不急着连先把日志目录和字符集这两件事定下来再谈别的。这套流程跑顺了不管是 SSH 下的 Linux 运维还是串口下的交换机调试都是一套思路。希望帮到你。本文还有配套的精品资源点击获取