SecureCRT不能连CentOS?密钥格式转换教程
SecureCRT突然报“No compatible hostkey method found”,CentOS明明开着sshd,密钥也拷进去了,就是连不上?别急着重装系统,九成是密钥格式不对。把OpenSSH的新私钥塞进老派SecureCRT,就像拿公交卡刷地铁闸机,读头根本认不出。下面这套流程,从报错定位到格式转换,一条命令不多,一条步骤不少,照着敲完就能秒登。

一、先确认是不是密钥格式惹祸
打开SecureCRT的“快速连接”,填好IP端口,勾上PublicKey,点连接。底部日志若弹出“Unable to negotiate with 192.168.x.x port 22: no matching host key type”,基本坐实问题。CentOS的sshd默认启用openssh-key-v1格式,而SecureCRT老版本只认PEM(RSA PKCS1)。密钥对不上号,握手直接失败。
二、CentOS端生成兼容私钥
登录CentOS控制台,执行:
ssh-keygen -t rsa -b 2048 -m PEM -f ~/.ssh/idrsacompat
参数-m PEM强制输出老格式,文件名自取,别覆盖原密钥。生成后把idrsacompat下载到Windows本地,准备下一步转换。

三>SecureCRT导入私钥并转格式
打开SecureCRT,菜单栏Tools→Manage Agent Keys→Import,选中刚下载的idrsacompat。若提示“Key format not supported”,说明文件仍是OpenSSH头。别慌,用自带的“Convert”功能:点中密钥→Convert→Export OpenSSH Key→保存为idrsacrt.pem。这一步把OpenSSH私钥再包一层PEM外壳,SecureCRT就能识别。
四、把公钥写进服务器authorized_keys
回到CentOS,把公钥追加到授权文件:
cat ~/.ssh/idrsacompat.pub >> ~/.ssh/authorized_keys
权限必须死磕:chmod 600 ~/.ssh/authorized_keys && chmod 700 ~/.ssh,不然sshd直接拒认。

五、SecureCRT会话里指定新私钥
右键会话→Properties→SSH2→Authentication→PublicKey→Properties,选中“Use identity or certificate file”,浏览到idrsacrt.pem。Password留空,OK保存。再点连接,熟悉的黑框一闪,提示符跳出来,搞定。
六、如果还是连不上,检查这三处
1. 服务器端sshdconfig:确认PubkeyAuthentication yes、AuthorizedKeysFile .ssh/authorizedkeys没被注释。
2. 防火墙:firewall-cmd --list-all看22端口是否放行。
3. SELinux:临时放行setenforce 0测试,能连就加规则永久放行。
七、常见坑速查表
• 私钥开头是-----BEGIN OPENSSH PRIVATE KEY-----?SecureCRT一定不认,必须转PEM。
• 用Puttygen转PPK再导回SecureCRT?多绕一步,直接PEM最干净。
• 复制公钥时多敲了回车?authorized_keys里一行一条,多出的空行会整段失效。
八、一步到位脚本(懒人专用)
把下面整段粘进CentOS,回车即可生成兼容密钥并配置好权限:
#!/bin/bashkeyname=~/.ssh/idrsacrt
ssh-keygen -t rsa -b 2048 -m PEM -f $keyname -N ""
cat ${keyname}.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
echo "Done. Download $keyname to Windows and import into SecureCRT."
运行完把idrsacrt拖回本地,按第五节导入,30秒完事。
九、升级SecureCRT行不行
新版SecureCRT 9.x已内置openssh-key-v1解析,理论上不用转格式。但企业环境版本被IT锁死,自己没权限升,转密钥仍是唯一出路。况且老版本稳定,很多运维懒得换,学会手动转换,走到哪都不慌。
SecureCRT连不上CentOS,九成是密钥格式对不上;记住“生成用-m PEM、导入后转PEM、服务器端权限600”,顺序别乱,一次成。
