SSH Push 연락 방법
SSH Push(ssh-push)는 Salt 클라이언트가 SUSE Multi-Linux Manager 서버에 직접 연결할 수 없는 환경에서 사용됩니다. 이 환경에서 클라이언트는 방화벽으로 보호되는 이름이 DMZ인 영역에 위치합니다. DMZ 내의 어떤 시스템도 SUSE Multi-Linux Manager 서버가 있는 내부 네트워크에 대한 연결을 열 수 있는 권한이 없습니다.
SSH Push는 SUSE Multi-Linux Manager에서 클라이언트로만 터널을 열지만, 역방향 채널은 직접 이동합니다. 이러한 시나리오는 일부 위치에서는 작동하지 않을 수 있습니다. 따라서 SSH Push(터널 포함)도 연락 방법으로 사용할 수 있습니다. 또한 역방향 터널이 열리므로 클라이언트에서 서버로의 연결을 차단할 수 있는 모든 방화벽을 통과하여 통신할 수 있습니다.
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. 사용 가능한 파라미터
SSH Push를 구성할 때 호스트, 활성화 키, 비밀번호 등 시스템의 등록 시에 사용되는 파라미터를 수정할 수 있습니다. 비밀번호는 부트스트랩에만 사용되며 어디에도 저장되지 않습니다. 향후 모든 SSH 세션은 키/인증서 쌍을 통해 인증됩니다. 이러한 파라미터는 에서 구성할 수 있습니다.
또한 시스템 전체에 사용되는 영구 파라미터를 구성할 수 있으며, sudo 사용자가 루트 대신 권한 없는 사용자로 시스템에 액세스하도록 설정할 수도 있습니다.
|
서버 컨테이너 내에서 단계를 실행하기 전에 |
-
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파일에서 이 줄을 제거하는 것이 좋습니다. -
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
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. 향후 출시될 기능
SSH Push를 통한 푸시에서는 아직 지원하지 않는 몇 가지 기능이 있습니다. 다음 기능은 Salt SSH 클라이언트에서 작동하지 않습니다.
-
OpenSCAP 감사
-
Beacons, 이로 인해
-
zypper를 사용해 시스템에 패키지를 설치해도 패키지 새로 고침이 호출되지 않습니다. -
가상 호스트 기능(예: 게스트에 대한 호스트)은 가상 호스트 시스템이 Salt SSH 기반인 경우 작동하지 않습니다.
-
자세한 내용은 다음을 참조하십시오.
-
일반적인 Salt SSH에 대한 내용은 Salt SSH 및 https://docs.saltproject.io/en/latest/topics/ssh/에서 확인할 수 있습니다.
-
SSH 키 순환에 대한 내용은 specialized-guides:salt/salt-ssh.adoc#salt.ssh.key_rotation에서 확인할 수 있습니다.