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

SSH Push(터널 사용)(ssh-push-tunnel)는 클라이언트가 SUSE Manager 서버에 직접 연결할 수 없는 환경에서 사용됩니다. 이 환경에서는 클라이언트가 방화벽으로 보호되는 영역인 DMZ에 위치합니다. DMZ 내의 어떤 시스템도 SUSE Manager 서버를 포함하여 내부 네트워크에 대한 연결을 열 수 있는 권한이 없습니다.

이 SSH 방법은 내부 네트워크의 SUSE Manager 서버에서 DMZ에 위치한 클라이언트로 암호화된 터널을 생성합니다. 모든 작업과 이벤트가 실행된 후 터널이 종료됩니다.

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

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

터널은 암호화된 터널을 통해 서버로의 액세스를 제공하기 위해 사용됩니다. SSH 푸시 클라이언트(터널 사용)에 할당된 리포지토리는 이 터널을 통해서만 제공되므로 터널이 작동하는 동안에만 리포지토리를 사용할 수 있으므로 클라이언트 시스템에서 직접 패키지 관리자 도구를 사용할 수 없습니다. 즉, 서버에서 세션을 시작한 경우에만 액세스가 가능합니다. 클라이언트의 모든 패키지 관리 작업은 서버 쪽에서만 수행할 수 있습니다.

SSH를 통한 터널링 연결의 경우, HTTPS를 통한 터널링에는 포트 번호가 필요합니다. 기본적으로 사용되는 포트 번호는 1233입니다. 이를 덮어쓰려면 /etc/rhn/rhn.conf에 1024보다 큰 사용자 정의 포트 번호를 추가하면 됩니다.

ssh_push_port_https = high_port

이 구성 파라미터를 변경한 후에는 salt-secrets-config.service, tomcat.service, taskomatic.service와 같은 서비스를 다시 시작해야 합니다. 필요한 모든 서비스를 포함하려면 spacewalk-service를 루트로 다시 시작하는 것이 가장 좋은 방법입니다.

spacewalk-service restart

보안상의 이유로 sudo를 SSH와 함께 사용해 루트 권한 대신에 권한 없는 사용자로 시스템에 액세스하고 싶을 때가 있을 수 있습니다.

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

  2. 각 클라이언트에서 다음과 같이 sudoers 파일을 편집합니다.

    sudo visudo
  3. 이 줄을 sudoers 파일 끝에 추가하여 사용자에게 sudo 액세스 권한을 부여합니다. 다음과 같이 <user>를 Web UI에서 클라이언트를 부트스트래핑하고 있는 사용자의 이름으로 교체합니다.

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

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

  4. SUSE Manager 서버의 /etc/rhn/rhn.conf 구성 파일에서 다음과 같은 줄을 추가하거나 수정하여 권한 없는 사용자 이름을 포함합니다.

    ssh_push_sudo_user = <user>

이 구성 파라미터를 변경한 후에는 salt-secrets-config.service, tomcat.service, taskomatic.service와 같은 서비스를 다시 시작해야 합니다. 필요한 모든 서비스를 포함하려면 spacewalk-service를 루트로 다시 시작하는 것이 가장 좋은 방법입니다.

spacewalk-service restart

이러한 클라이언트를 SUSE Manager 서버에 등록하려면 Web UI 또는 API를 사용해야 합니다.

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

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

API를 사용하여 어떤 연락 방법을 사용할지 관리할 수 있습니다. 이 예제 Python 코드는 연락 방법을 ssh-push-tunnel로 설정합니다.

유효한 값은 다음과 같습니다.

  • default(풀)

  • 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-tunnel'})