SSH 推送(使用隧道)联系方法
SSH 推送(利用隧道)(ssh-push-tunnel) 用于客户端无法直接访问 SUSE Multi-Linux Manager 服务器的环境。
在此环境中,客户端位于称为 DMZ 的防火墙保护区。
DMZ 内的任何系统都无权打开与内部网络的连接,包括 SUSE Multi-Linux Manager 服务器。
换言之:SSH 推送(利用隧道)还会创建从客户端到 SUSE Multi-Linux Manager 服务器的反向隧道,而不仅是从服务器到客户端的隧道。
服务器使用 SSH 定期联系客户端,以签入和执行安排的操作和事件。
|
在使用 SSH 推送方法管理的客户端上,目前不支持使用置备模式重新安装系统。 |
|
隧道用于通过加密隧道提供对服务器的访问。 分配给 SSH 推送客户端(利用隧道)的仓库仅通过此隧道提供,因此无法直接从客户端系统使用软件包管理工具,因为仓库仅在隧道开启时可用。 换句话说,只有在服务器发起会话时才能访问。 客户端上的所有软件包管理操作只能从服务器端执行。 |
|
在服务器容器内运行步骤之前,请使用 |
对于通过 SSH 建立隧道的连接,需要指定一个端口号,该端口用于通过 HTTPS 进行隧道通信。
默认使用的端口号是 1233。
要覆盖它,您可以在容器内,将大于 1024 的自定义端口号添加到 /etc/rhn/rhn.conf:
ssh_push_port_https = high_port
更改此配置参数后,您必须重启 salt-secrets-config.service、tomcat.service 和 taskomatic.service 等服务。
为了覆盖所有所需的服务,最好以根用户身份重启 SUSE Multi-Linux Manager 服务器。
在容器外,从容器主机输入:
mgradm restart
出于安全原因,您可能需要结合使用 sudo 和 SSH,以非特权用户身份而不是 root 身份访问系统。
-
在每个客户端系统上,创建相应的非特权用户。
-
在每个客户端系统上,编辑
sudoers文件:sudo visudo
-
在
sudoers文件末尾添加此行,以授予用户sudo访问权限。 将<user>替换为在 Web UI 中负责启动客户端的用户名称:<user> ALL=NOPASSWD: /usr/bin/python3, /var/tmp/venv-salt-minion/bin/python
此过程授予 root 访问权限,无需密码,这对于注册客户端是必需的。 当客户端成功安装后,它以 root 权限运行,因此不再需要访问权限。 我们建议在客户端成功安装后,从
sudoers文件中去除此行。 -
在 SUSE Multi-Linux Manager 服务器容器内,编辑
/etc/rhn/rhn.conf配置文件,并添加或修改此行以包含非特权用户名:ssh_push_sudo_user = <user>
更改此配置参数后,您必须重启 salt-secrets-config.service、tomcat.service 和 taskomatic.service 等服务。
为了覆盖所有所需的服务,最好以根用户身份重启 SUSE Multi-Linux Manager 服务器。
在容器外,从容器主机输入:
mgradm restart
您需要使用 Web UI 或 API 将这些客户端注册到 SUSE Multi-Linux Manager 服务器。
在开始之前,您需要确保已指定用于 SSH 隧道的端口。 如果在更改端口号之前已注册客户端,则需要使用重新激活密钥重新注册。
-
有关启动的更多信息,请参见 使用引导脚本注册客户端。
-
有关启动的更多信息,请参见 client-configuration:activation-keys.adoc#activation-keys-reactivation。
您可以使用 API 管理要使用的联系方法。
此示例 Python 代码将联系方法设置为 ssh-push-tunnel。
client = xmlrpclib.Server(MLM_HOST + "/rpc/api", verbose=0)
key = client.auth.login(MLM_LOGIN, MLM_PASSWORD)
client.system.setDetails(key, 1000012345, {'contact_method' : 'ssh-push-tunnel'})
有效值为:
-
default(拉取) -
ssh-push -
ssh-push-tunnel