OpenSSH升级后Ansible配置文件中scp_extra_args不生效求助
解决Ansible配置文件
scp_extra_args="-O"不生效的问题 问题根源
Ansible 2.9.x对配置文件格式要求严格,scp_extra_args必须放在[defaults]配置段内,若直接写在配置文件根目录(未归属任何段),Ansible会忽略该参数。另外,配置里给-O加引号属于多余操作,会导致参数被当成带引号的字符串传递,scp无法识别。
修复步骤
修正
ansible.cfg的配置结构
打开/etc/ansible/ansible.cfg,将scp_extra_args移入[defaults]块,正确格式如下:[defaults] scp_extra_args = -O注意去掉
-O外层的引号,配置文件中不需要额外引号包裹参数。验证配置是否成功加载
执行以下命令,确认Ansible已正确读取该参数:ansible-config dump | grep scp_extra_args若输出显示
scp_extra_args = -O,说明配置已生效。额外排查点(若上述步骤无效)
- 检查是否存在优先级更高的配置文件:Ansible读取配置的优先级为
ANSIBLE_CONFIG环境变量指定文件 > 当前目录ansible.cfg>~/.ansible.cfg>/etc/ansible/ansible.cfg。若其他位置的配置文件设置了相同参数,会覆盖全局配置,需对应调整。 - 确认虚拟环境的配置路径:由于使用Python虚拟环境,需确保修改的
/etc/ansible/ansible.cfg是该环境实际读取的配置文件。若不确定,可直接在虚拟环境根目录创建本地ansible.cfg并写入正确配置。
- 检查是否存在优先级更高的配置文件:Ansible读取配置的优先级为
补充说明
OpenSSH 9.0+默认禁用旧版SCP协议(改用SFTP),但Ansible 2.9.x不支持新的SCP交互逻辑,因此必须通过-O强制使用旧协议,否则会回退到SSH隧道传输。命令行和groupvars能生效,是因为这些方式的参数优先级高于格式错误的全局配置文件,修正配置格式后即可正常生效。
内容的提问来源于stack exchange,提问作者Astateofmind
相关产品推荐
相关产品推荐

