SSH Push 연락 방법
SSH Push(ssh-push
)는 Salt 클라이언트가 SUSE Multi-Linux Manager 서버에 직접 연결할 수 없는 환경에서 사용됩니다. 이 환경에서 클라이언트는 방화벽으로 보호되는 이름이 DMZ인 영역에 위치합니다. DMZ 내의 어떤 시스템도 SUSE Multi-Linux Manager 서버가 있는 내부 네트워크에 대한 연결을 열 수 있는 권한이 없습니다.
SSH Push opens a tunnel only from SUSE Multi-Linux Manager to the client, but the reverse channel goes directly. Such a scenario might not work everywhere. Therefore also SSH Push (with tunnel) is available as contact method. That also opens a reverse tunnel and thus you can communicate through all firewalls which otherwise might block the connection from client to server.
SSH 푸시는 클라이언트에 데몬 에이전트를 설치할 수 없는 경우에도 사용할 수 있습니다.
SSH 푸시 방법에는 심각한 제한이 있습니다. 크기 조정이 원활하지 않으며, 일반 Salt 방법( |
서버는 SSH Push를 사용하여 정기적으로 클라이언트에 연락해 체크인하고 예약된 작업과 이벤트를 수행합니다.
프로비저닝 모델을 사용하여 시스템을 다시 설치하는 것은 현재 SSH Push로 관리되는 클라이언트에서는 지원되지 않습니다. |
이 이미지는 SSH Push 프로세스 경로를 보여줍니다. Taskomatic
블록의 왼쪽에 있는 모든 항목은 SUSE Multi-Linux Manager 클라이언트에서 실행 중인 프로세스를 나타냅니다.

SSH Push를 사용하려면 클라이언트에서 실행 중인 SSH 데몬이 있어야 하며, SUSE Multi-Linux Manager 서버에서 실행 중인 salt-api
데몬에 연결할 수 있어야 합니다. 또한 요구사항에 해당하는 Python 버전이 클라이언트 시스템에 Salt 번들과 함께 배포됩니다.
다음 등록 절차를 시작하기 전에 SSH 푸시 연락 방법을 구성하여 활성화 키를 정의합니다. 이 방법에서는 서버에 HTTPS로 직접 연결해야 합니다.
이러한 클라이언트를 SUSE Multi-Linux Manager 서버에 등록하려면 Web UI 또는 API를 사용해야 합니다. 다음 절차 또는 예제를 참조하십시오.
-
SUSE Multi-Linux Manager Web UI에서
으로 이동하여 해당 필드를 완성합니다. -
SSH Push 연락 방법이 구성된 활성화 키를 선택합니다. 활성화 키에 대한 자세한 내용은 활성화 키에서 확인할 수 있습니다.
-
SSH를 통해 시스템을 완전히 관리
확인란을 선택합니다. -
부트스트랩을 클릭하여 등록을 시작합니다.
-
로 이동하여 시스템이 올바르게 등록되었는지 확인합니다.
API를 사용해 어떤 연결 방법을 사용할지 관리할 수 있습니다. 다음 Python 코드 예제에서는 연결 방법을 ssh-push
로 설정합니다.
유효한 값은 다음과 같습니다.
-
default
(풀) -
ssh-push
-
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'})
1. Available Parameters
SSH Push를 구성할 때 호스트, 활성화 키, 비밀번호 등 시스템의 등록 시에 사용되는 파라미터를 수정할 수 있습니다. 비밀번호는 부트스트랩에만 사용되며 어디에도 저장되지 않습니다. 향후 모든 SSH 세션은 키/인증서 쌍을 통해 인증됩니다. 이러한 파라미터는
에서 구성할 수 있습니다.또한 시스템 전체에 사용되는 영구 파라미터를 구성할 수 있으며, sudo 사용자가 루트 대신 권한 없는 사용자로 시스템에 액세스하도록 설정할 수도 있습니다.
Use |
-
SUSE Multi-Linux Manager 서버에 최신
spacewalk-taskomatic
및spacewalk-certs-tools
패키지가 설치되어 있는지 확인합니다. -
각 클라이언트 시스템에서 적절한 권한 없는 사용자를 생성합니다.
-
각 클라이언트에서 다음과 같이
sudoers
파일을 편집합니다.sudo visudo
-
이 줄을
sudoers
파일 끝에 추가하여 사용자에게sudo
액세스 권한을 부여합니다. 다음과 같이<user>
를 Web UI에서 클라이언트를 부트스트래핑하고 있는 사용자의 이름으로 교체합니다.<user> ALL=NOPASSWD: /usr/bin/python3, /var/tmp/venv-salt-minion/bin/python
이 절차는 클라이언트 등록에 필요한 비밀번호가 없어도 루트에 액세스 권한을 부여합니다. 클라이언트는 성공적으로 설치된 후 루트 권한으로 실행되므로 액세스 권한이 더 이상 필요 없습니다. 클라이언트가 성공적으로 설치된 후
sudoers
파일에서 이 줄을 제거하는 것이 좋습니다. -
Inside the SUSE Multi-Linux Manager Server container, edit the
/etc/rhn/rhn.conf
configuration file, and add or amend this line to include the unprivileged username:ssh_push_sudo_user = <user>
-
After changing this configuration parameter you must restart services such as
salt-secrets-config.service
,tomcat.service
, andtaskomatic.service
. To cover all needed services, it is the best to restart the SUSE Multi-Linux Manager Server as root. Outside of the container, from the container host, enter:mgradm restart
2. 작업 실행
SSH Push 기능은 taskomatic을 사용하여 salt-ssh
를 수행해 예약된 작업을 실행합니다. taskomatic 작업은 주기적으로 예약된 작업을 확인하고 실행합니다. SSH Push 기능은 예약된 작업을 기반으로 완전한 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. Future Features
SSH Push를 통한 푸시에서는 아직 지원하지 않는 몇 가지 기능이 있습니다. 다음 기능은 Salt SSH 클라이언트에서 작동하지 않습니다.
-
OpenSCAP 감사
-
Beacons, 이로 인해
-
zypper
를 사용해 시스템에 패키지를 설치해도 패키지 새로 고침이 호출되지 않습니다. -
가상 호스트 기능(예: 게스트에 대한 호스트)은 가상 호스트 시스템이 Salt SSH 기반인 경우 작동하지 않습니다.
-
For more information:
-
about Salt SSH in general, see Salt SSH and https://docs.saltproject.io/en/latest/topics/ssh/.
-
about SSH key rotation, see specialized-guides:salt/salt-ssh.adoc#salt.ssh.key_rotation.