使用 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 密钥。
代理工作节点服务器上的用户 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 密钥,以使更改生效。