使用 Salt 管理运行 Junos OS 的设备时的身份验证错误故障排除
问题
描述
对运行 Junos OS 的设备启动代理小数处理并接受 Salt 主上密钥后,Junos 代理(适用于 Salt)无法连接到该设备,代理最小服务器上的代理日志文件包括有关身份验证失败的错误。例如:
saltuser@salt-master:~$ sudo salt 'router1' test.ping router1: Minion did not return. [No response]
saltuser@minion:~/.ssh$ sudo cat /var/log/salt/proxy ... File "/usr/lib/python3/dist-packages/salt/minion.py", line 3420, in _post_master_init proxy_init_fn(self.opts) File "/usr/lib/python3/dist-packages/salt/proxy/junos.py", line 109, in init thisproxy['conn'].open() File "/usr/local/lib/python3.6/dist-packages/jnpr/junos/device.py", line 1268, in open raise EzErrors.ConnectAuthError(self) jnpr.junos.exception.ConnectAuthError: ConnectAuthError(router1.example.com)
原因
Salt 用户可能无法对运行 Junos OS 的设备进行身份验证,原因如下:
用户在运行 Junos OS 的设备上没有帐户。
用户的帐户在运行 Junos OS 的设备上配置了基于文本的密码,但在定义该设备的代理配置的柱子文件中,为用户提供错误的密码或没有密码。
用户有一个帐户,并使用 SSH 密钥对运行 Junos OS 的设备进行身份验证,但设备或代理小数服务器上无法访问 SSH 密钥。
当 Junos 代理尝试建立连接时,代理上用户的 SSH 配置文件会定义错误的设备身份验证设置,而当 Junos 代理尝试建立连接时,会自动查询该文件。
如果不在定义代理信息的柱子文件中或 SSH 配置文件中指定用户,则用户默认为当前用户。
解决 方案
验证以下配置项目,以确保用户可以使用托管设备进行身份验证:
使用运行 Junos OS 的设备进行验证的 Salt 用户设备上有一个登录帐户,并且为该帐户配置了基于文本的密码或 SSH 公钥。
如果配置了 SSH 密钥,请验证用户是否可以在代理最小服务器上访问这些密钥,以及是否可以使用密钥成功连接到设备。
用户的 SSH 配置文件不包含该设备会导致连接失败的任何设置,例如,其他用户名或 SSH 密钥文件。
为 Salt master 上的设备代理配置提供正确的参数,例如:
# /srv/pillar/router1-proxy.sls proxy: proxytype: junos host: router1.example.com username: saltuser password: lab123 # SSH password or SSH key file password ssh_private_key_file: /home/saltuser/.ssh/id_rsa_salt # non-default SSH key location on proxy minion server port: 830
如果更新包含给定设备的代理配置的柱子文件,则可能需要在代理小区服务器上重新启动该设备的代理小分钟化进程,并接受 Salt 主机上的新 Salt 密钥,以便使更改生效。