SaltStack执行salt state.apply时SSH连接失败问题排查咨询
问题描述
- Salt Master版本:3002.6,运行于RHEL7系统
- Salt Minion版本:3002.9,运行于RHEL8系统
- 已完成Salt密钥在Master端的成功生成,但执行
salt state.apply时出现以下错误:
[DEBUG ] Trying to connect to: tcp://XX.XX.XX.XX:4506
[DEBUG ] salt.crypt.get_rsa_pub_key: Loading public key
[ERROR ] Sign-in attempt failed: {'enc': 'pub', 'pub_key': '-----BEGIN PUBLIC KEY----------END PUBLIC KEY-----
', 'publish_port': 4505, 'aes':[DEBUG ] Closing AsyncZeroMQReqChannel instance
已完成的排查动作:
- 验证网络、防火墙无异常,Master与Minion可直接SSH连接
- 查阅官方故障排查文档,未发现异常
- 参考社区讨论,得知Master版本需高于Minion,建议先升级Master
咨询问题:
- 该版本差异是否为报错的唯一原因?
- 除版本升级外还需排查哪些内容?
问题解答
1. 版本差异是否为唯一原因?
版本差异是导致该报错的核心原因,但并非唯一可能。SaltStack的版本兼容原则要求Master版本应不低于Minion版本,当Minion版本高于Master时,双方的加密协议、通信逻辑可能存在不兼容,会直接引发签名验证失败(如错误中显示的空公钥、登录失败)。不过,也存在其他因素叠加导致该问题的可能,需要进一步排查。
2. 除版本升级外的排查内容
- Minion端公钥完整性检查:错误中显示的公钥内容为空(仅包含首尾标记),需验证Minion本地的公钥文件(默认路径
/etc/salt/pki/minion/minion.pub)是否完整、无损坏。若文件为空或内容异常,需重新生成Minion密钥:
之后重新向Master提交密钥请求并接受。salt-minion --gen-keys - Master端密钥存储目录权限:检查Master端密钥存储目录(
/etc/salt/pki/master/minions/)的权限是否为salt:salt所有,权限设置是否为0700。权限异常会导致Master无法正确读取或存储Minion密钥,引发验证失败。 - Minion配置文件中的Master地址准确性:确认Minion配置文件(
/etc/salt/minion)中master字段填写的IP/域名是否正确,是否存在拼写错误或端口配置错误(默认通信端口为4506,发布端口为4505)。 - 加密算法兼容性:部分RHEL系统可能存在默认加密算法差异,可尝试在Master和Minion的配置文件中强制指定兼容的加密算法,例如在
/etc/salt/master和/etc/salt/minion中添加:
之后重启Salt服务。crypto_backend: cryptography - Salt服务状态检查:确认Master和Minion的Salt服务是否正常运行,有无进程异常或日志报错。可通过以下命令重启服务:
并查看服务日志(# Master端 systemctl restart salt-master # Minion端 systemctl restart salt-minion/var/log/salt/master、/var/log/salt/minion)获取更多细节。
内容的提问来源于stack exchange,提问作者Subit Das
相关产品推荐
相关产品推荐

