SSH Push(터널 사용) 연락 방법

SSH Push (터널 사용) (ssh-push-tunnel)는 클라이언트가 SUSE Multi-Linux Manager 서버에 직접 접근할 수 없는 환경에서 사용됩니다. 이 환경에서 클라이언트는 DMZ라고 불리는 방화벽 보호 구역에 위치해 있습니다. DMZ 내의 어떤 시스템도 내부 네트워크에 연결을 열 수 있는 권한이 없으며, SUSE Multi-Linux Manager 서버도 포함됩니다.

즉, SSH Push(터널 사용)는 서버에서 클라이언트로의 터널뿐만 아니라, 클라이언트에서 SUSE Multi-Linux Manager 서버로의 역방향 터널도 생성합니다.

서버는 SSH를 사용해 정기적으로 클라이언트에 연결하여 체크인하고 예약된 작업과 이벤트를 수행합니다.

프로비저닝 모델을 사용하여 시스템을 다시 설치하는 것은 현재 SSH Push로 관리되는 클라이언트에서는 지원되지 않습니다.

이 터널은 암호화된 터널을 통해 서버에 접근을 제공하는 데 사용됩니다. SSH Push 클라이언트(터널 사용)에 할당된 리포지토리는 이 터널을 통해서만 제공되므로, 클라이언트 시스템에서는 패키지 관리자 도구를 직접 사용할 수 없습니다. 리포지토리는 터널이 활성화되어 있을 때만 사용할 수 있습니다. 즉, 세션이 서버에 의해 시작될 때만 접근이 가능합니다. 클라이언트에서의 모든 패키지 관리 작업은 서버 측에서만 수행할 수 있습니다.

서버 컨테이너 내에서 단계를 실행하기 전에 `mgrctl term`을(를) 사용하십시오.

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와 함께 사용해 루트 권한 대신에 권한 없는 사용자로 시스템에 액세스하고 싶을 때가 있을 수 있습니다.

절차 권한 없는 SSH 액세스 구성
  1. 각 클라이언트 시스템에서 적절한 권한 없는 사용자를 생성합니다.

  2. 각 클라이언트 시스템에서 sudoers 파일을 편집합니다:

    sudo visudo
  3. 이 줄을 sudo 파일의 끝에 추가하여 사용자에게 sudoers 액세스를 부여하십시오. `<user>`을(를) Web UI에서 클라이언트를 부팅하는 사용자의 이름으로 교체하십시오:

    <user>  ALL=NOPASSWD: /usr/bin/python3, /var/tmp/venv-salt-minion/bin/python

    이 절차는 클라이언트를 등록하는 데 필요한 비밀번호 없이 루트 액세스를 부여합니다. 클라이언트가 성공적으로 설치되면 루트 권한으로 실행되므로 더 이상 액세스가 필요하지 않습니다. 클라이언트가 성공적으로 설치된 후 sudoers 파일에서 이 줄을 제거하는 것이 좋습니다.

  4. 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 서버에 등록하려면 SUSE Multi-Linux Manager 또는 API를 사용해야 합니다.

시작하기 전에 SSH 터널링에 사용할 포트를 지정했는지 확인해야 합니다. 포트 번호를 변경하기 전에 클라이언트를 등록한 경우, 재활성화 키로 다시 등록해야 합니다.

예: SSH Push에 대한 API 액세스(터널 사용)

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