通过FTPS从大型机向RedHat Linux传输文件出现TLS认证协商失败问题
可行性确认
z/OS大型机自带的FTP客户端原生支持FTPS协议,和RedHat服务器上部署的vsftpd服务的FTPS能力完全兼容,可以实现你需要的每周定时批量文件传输需求。
核心报错定位
你给出的日志中,核心错误是EZA2897I Authentication negotiation failed,该错误代表FTPS的TLS握手阶段就已失败,控制连接直接被断开。后续的用户名、密码、cd命令报错都是连接断开后的无效输入,无需额外排查。
分步排查解决步骤
第一步:校验vsftpd的FTPS配置
登录RedHat服务器,编辑/etc/vsftpd/vsftpd.conf配置文件,确认以下参数配置正确:ssl_enable=YES allow_anon_ssl=NO force_local_logins_ssl=YES force_local_data_ssl=YES # vsftpd 2.0.5版本较旧,最高仅支持TLS 1.2,不要开启TLS 1.3 ssl_tlsv1_2=YES ssl_sslv2=NO ssl_sslv3=NO # 确认证书和私钥路径正确,证书未过期 rsa_cert_file=/etc/ssl/certs/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.key # 配置被动模式端口范围,避免防火墙拦截 pasv_enable=YES pasv_min_port=40000 pasv_max_port=40100配置修改完成后执行
service vsftpd restart重启服务生效。第二步:匹配大型机FTPS配置
检查大型机端SYS1.TCPPARMS(FTPDATA)配置文件:- 确认TLS版本配置和vsftpd端一致,仅启用TLS 1.2,不要配置更高版本
- 确认vsftpd服务端的CA根证书已导入大型机的密钥环,z/OS FTP客户端默认会校验服务端证书有效性,未导入证书会直接导致握手失败
- 测试环境可临时添加
SECURE_FTP ALLOW_UNKNOWN_CA YES参数跳过证书校验,生产环境不建议使用该配置
第三步:校验网络连通性
确认大型机到RedHat服务器的21控制端口,以及vsftpd配置的40000-40100被动模式端口范围,没有被中间防火墙、安全组规则拦截。第四步:手动测试验证
先不要直接跑JCL作业,在大型机TSO环境手动执行FTPS连接命令测试:ftp -a tls [你的Linux服务器地址]
输入用户名密码后确认可以正常连接,尝试上传一个小文件验证功能正常后,再调整JCL脚本上线执行即可。
内容的提问来源于stack exchange,提问作者ray
相关产品推荐
相关产品推荐

