SSH 推送联系方法
SSH 推送 (ssh-push
) 用于 Salt 客户端无法直接访问 SUSE Manager 服务器的环境。在此环境中,客户端位于受防火墙保护的区域(称为 DMZ)。DMZ 内的所有系统均无权打开连至 SUSE Manager 服务器所在内部网络的连接。
如果无法在客户端上安装守护程序代理,也可以使用 SSH 推送。
SSH 推送方法存在严重的局限性。它的缩放能力不是很好,并且比普通 Salt 方法( |
服务器使用 SSH 推送来定期联系客户端,以签入和执行安排的操作和事件。
在使用 SSH 推送方法管理的客户端上,目前不支持使用置备模式重新安装系统。 |
下图说明了 SSH 推送的进程路径。Taskomatic
块左侧的各项表示在 SUSE Manager 客户端上运行的进程。
要使用 SSH 推送,必须在客户端上运行 SSH 守护程序,并且 SUSE Manager 服务器上运行的 salt-api
守护程序必须能够访问 SSH 守护程序。此外,将使用 Salt 捆绑包在客户端系统上部署所需的 Python 版本。
在开始执行以下注册过程之前,请先在配置了 SSH 推送联系方法的情况下定义一个激活密钥。此方法要求与服务器建立 HTTPS 直接连接。
需要使用 Web UI 或 API 将这些客户端注册到 SUSE Manager 服务器。请参见以下过程或示例。
-
在 SUSE Manager Web UI 中,导航到
,然后填写相应的字段。 -
选择一个配置了 SSH 推送联系方法的激活密钥。有关激活密钥的详细信息,请参见 激活密钥。
-
选中
完全通过 SSH 管理系统
复选框。 -
单击 Bootstrap 开始注册。
-
导航到
,确认该系统已正确注册。
您可以使用 API 来管理要使用的联系方法。下面的示例 Python 代码将联系方法设为 ssh-push
。
有效值为:
-
default
(pull) -
ssh-push
-
ssh-push-tunnel
client = xmlrpclib.Server(SUMA_HOST + "/rpc/api", verbose=0) key = client.auth.login(SUMA_LOGIN, SUMA_PASSWORD) client.system.setDetails(key, 1000012345, {'contact_method' : 'ssh-push'})
1. 可用参数
如果您要配置通过 SSH 推送,可以修改注册系统时使用的参数,包括主机、激活密钥和口令。口令只能用于引导,不会保存在任何位置。所有将来的 SSH 会话均通过密钥/证书对获得授权。这些参数在
中配置。您也可以配置在系统范围使用的持久性参数,包括配置 sudo 用户来以非特权用户而不是 root 身份访问系统。
-
确保您已在 SUSE Manager 服务器上安装最新的
spacewalk-taskomatic
和spacewalk-certs-tools
软件包。 -
在每个客户端系统上,创建相应的非特权用户。
-
在每个客户端系统上,编辑
sudoers
文件:sudo visudo
-
在
sudoers
文件末尾添加下面一行,以向用户授予sudo
访问权限。以在 Web UI 中引导客户端的用户的名称替换<user>
:<user> ALL=NOPASSWD: /usr/bin/python3, /var/tmp/venv-salt-minion/bin/python
此过程无需口令便可授予 root 访问权限,而注册客户端需要提供口令。客户端成功安装后会以 root 特权运行,因此将不再需要该访问权限。客户端成功安装之后,建议您从
sudoers
文件中去除该行。 -
在 SUSE Manager 服务器上,于
/etc/rhn/rhn.conf
配置文件中添加或修改下面一行以包含非特权用户名:ssh_push_sudo_user = <user>
更改此配置参数后,必须重启动 salt-secrets-config.service
、tomcat.service
和 taskomatic.service
等服务。为了涵盖全部所需服务,最好以 root 身份重启动 SUSE Manager 服务器:
mgradm restart
2. 操作的执行
SSH 推送功能使用 taskomatic 来通过 salt-ssh
执行安排的操作。taskomatic 作业会定期检查并执行安排的操作。SSH 推送功能根据安排的操作执行完整的 salt-ssh
调用。
默认可以同时执行 20 项 Salt SSH 操作。您可以在配置文件中添加下面几行,并上调 parallel_threads
的值,以增加可同时执行的操作数。建议您将并行操作数设置为较低的值,以免出现问题:
taskomatic.sshminion_action_executor.parallel_threads = <number> org.quartz.threadPool.threadCount = <value of parallel_threads + 20>
这样可调整任何客户端上同时运行的操作数,以及 taskomatic 使用的工作器线程总数。如果需要在多个客户端上运行操作,则每个客户端上的操作始终按顺序执行。
如果客户端是通过代理连接的,则需要调整代理上的 MaxSessions
设置。在此情况下,请将并行连接的数量设置为客户端总数的三倍。
3. 未来的功能
SSH 推送目前尚不受支持某些功能。这些功能在 Salt SSH 客户端上不可用:
-
OpenSCAP 审计
-
导致以下事件的信标:
-
使用
zypper
在系统上安装软件包不会调用软件包刷新。 -
如果虚拟主机系统基于 Salt SSH,则虚拟主机功能(例如 Guest 主机)将无法正常工作。
-
3.1. 更多信息
-
有关 Salt SSH 的一般信息,请参见 Salt SSH 和 https://docs.saltstack.com/en/latest/topics/ssh/。
-
有关 SSH 密钥轮替的信息,请参见 specialized-guides:salt/salt-ssh.adoc#salt.ssh.key_rotation。