1.7. RHEL 시스템 역할을 사용하여 OpenSSH 서버 및 클라이언트 구성


sshd RHEL 시스템 역할을 사용하여 OpenSSH 서버와 ssh RHEL 시스템 역할을 사용하여 자동으로 여러 RHEL 시스템에서 OpenSSH 클라이언트를 일관되게 구성할 수 있습니다. 이러한 구성은 보안 원격 상호 작용이 필요한 모든 시스템에 필요합니다. 예를 들면 다음과 같습니다.

  • 원격 시스템 관리: SSH 클라이언트를 사용하여 다른 컴퓨터에서 시스템에 안전하게 연결합니다.
  • 보안 파일 전송: OpenSSH에서 제공하는 SFTP(Secure File Transfer Protocol)를 사용하면 로컬 시스템과 원격 시스템 간에 파일을 안전하게 전송할 수 있습니다.
  • 자동화된 DevOps 파이프라인: 원격 서버(CI/CD 파이프라인)에 대한 보안 연결이 필요한 소프트웨어 배포를 자동화합니다.
  • 터널링 및 포트 전달: 방화벽 뒤의 원격 서버의 웹 서비스에 액세스하기 위해 로컬 포트를 전달합니다. 예를 들어 원격 데이터베이스 또는 개발 서버입니다.
  • 키 기반 인증: 암호 기반 로그인에 대한 보다 안전한 대안입니다.
  • 인증서 기반 인증: 중앙 집중식 신뢰 관리 및 향상된 확장성.
  • 향상된 보안: 루트 로그인을 비활성화, 사용자 액세스 제한, 강력한 암호화 적용 및 기타 강화 양식으로 인해 시스템 보안이 강화됩니다.

sshd RHEL 시스템 역할 플레이북에서는 서버 SSH 구성 파일의 매개 변수를 정의할 수 있습니다.

이러한 설정을 지정하지 않으면 역할은 RHEL 기본값과 일치하는 sshd_config 파일을 생성합니다.

모든 경우에 부울은 관리 노드의 최종 구성에서 yesno 로 올바르게 렌더링됩니다. 목록을 사용하여 여러 줄 구성 항목을 정의할 수 있습니다. 예를 들면 다음과 같습니다.

sshd_ListenAddress:
  - 0.0.0.0
  - '::'
Copy to Clipboard Toggle word wrap

다음과 같이 렌더링됩니다.

ListenAddress 0.0.0.0
ListenAddress ::
Copy to Clipboard Toggle word wrap

1.7.2. sshd RHEL 시스템 역할을 사용하여 OpenSSH 서버 구성

sshd RHEL 시스템 역할을 사용하여 여러 OpenSSH 서버를 구성할 수 있습니다. 이렇게 하면 이름별로 제공하여 원격 사용자를 위한 보안 통신 환경이 보장됩니다.

  • 원격 클라이언트에서 들어오는 SSH 연결 관리
  • 인증 정보 확인
  • 안전한 데이터 전송 및 명령 실행
참고

SSHD 구성을 변경하는 다른 RHEL 시스템 역할과 함께 sshd RHEL 시스템 역할을 사용할 수 있습니다(예: Identity Management RHEL 시스템 역할). 구성을 덮어쓰지 않도록 sshd RHEL 시스템 역할은 네임스페이스(RHEL 8 및 이전 버전) 또는 드롭인 디렉터리(RHEL 9 이상)를 사용하는지 확인합니다.

사전 요구 사항

프로세스

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    ---
    - name: SSH server configuration
      hosts: managed-node-01.example.com
      tasks:
        - name: Configure sshd to prevent root and password login except from particular subnet
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.sshd
          vars:
            sshd_config:
              PermitRootLogin: no
              PasswordAuthentication: no
              Match:
                - Condition: "Address 192.0.2.0/24"
                  PermitRootLogin: yes
                  PasswordAuthentication: yes
    Copy to Clipboard Toggle word wrap

    예제 플레이북에 지정된 설정은 다음과 같습니다.

    PasswordAuthentication: yes|no
    OpenSSH 서버(sshd)가 사용자 이름과 암호 조합을 사용하는 클라이언트의 인증을 수락하는지 여부를 제어합니다.
    일치:
    match 블록을 사용하면 서브넷 192.0.2.0/24 에서만 암호를 사용하여 root 사용자가 로그인할 수 있습니다.

    플레이북에 사용된 역할 변수 및 OpenSSH 구성 옵션에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.sshd/README.md 파일 및 sshd_config(5) 매뉴얼 페이지를 참조하십시오.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. Playbook을 실행합니다.

    $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap

검증

  1. SSH 서버에 로그인합니다.

    $ ssh <username>@<ssh_server>
    Copy to Clipboard Toggle word wrap
  2. SSH 서버에서 sshd_config 파일의 내용을 확인합니다.

    $ cat /etc/ssh/sshd_config.d/00-ansible_system_role.conf
    #
    # Ansible managed
    #
    PasswordAuthentication no
    PermitRootLogin no
    Match Address 192.0.2.0/24
      PasswordAuthentication yes
      PermitRootLogin yes
    Copy to Clipboard Toggle word wrap
  3. 192.0.2.0/24 서브넷에서 root로 서버에 연결할 수 있는지 확인합니다.

    1. IP 주소를 확인합니다.

      $ hostname -I
      192.0.2.1
      Copy to Clipboard Toggle word wrap

      IP 주소가 192.0.2.1 - 192.0.2.254 범위 내에 있는 경우 서버에 연결할 수 있습니다.

    2. root로 서버에 연결합니다 :

      $ ssh root@<ssh_server>
      Copy to Clipboard Toggle word wrap

1.7.3. 비독점 구성에 sshd RHEL 시스템 역할 사용

기본적으로 sshd RHEL 시스템 역할을 적용하면 전체 구성을 덮어씁니다. 이전에 다른 RHEL 시스템 역할 또는 플레이북과 같은 구성을 조정한 경우 문제가 있을 수 있습니다. 다른 옵션을 유지하면서 선택한 구성 옵션에 대해서만 sshd RHEL 시스템 역할을 적용하려면 제외된 구성을 사용할 수 있습니다.

포함되지 않은 구성을 적용할 수 있습니다.

  • 구성 스니펫을 사용하여 RHEL 8 및 이전 버전에서.
  • 드롭인 디렉터리에서 파일을 사용하여 RHEL 9 이상에서 다음을 수행합니다. 기본 구성 파일은 드롭인 디렉터리에 이미 /etc/ssh/sshd_config.d/00-ansible_system_role.conf 로 배치되어 있습니다.

사전 요구 사항

프로세스

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    • RHEL 8 이상을 실행하는 관리형 노드의 경우:

      ---
      - name: Non-exclusive sshd configuration
        hosts: managed-node-01.example.com
        tasks:
          - name: Configure SSHD to accept environment variables
            ansible.builtin.include_role:
              name: redhat.rhel_system_roles.sshd
            vars:
              sshd_config_namespace: <my_application>
              sshd_config:
                # Environment variables to accept
                AcceptEnv:
                  LANG
                  LS_COLORS
                  EDITOR
      Copy to Clipboard Toggle word wrap
    • RHEL 9 이상을 실행하는 관리형 노드의 경우:

      - name: Non-exclusive sshd configuration
        hosts: managed-node-01.example.com
        tasks:
          - name: Configure sshd to accept environment variables
            ansible.builtin.include_role:
              name: redhat.rhel_system_roles.sshd
            vars:
              sshd_config_file: /etc/ssh/sshd_config.d/<42-my_application>.conf
              sshd_config:
                # Environment variables to accept
                AcceptEnv:
                  LANG
                  LS_COLORS
                  EDITOR
      Copy to Clipboard Toggle word wrap

      예제 플레이북에 지정된 설정에는 다음이 포함됩니다.

      sshd_config_namespace: <my_application>
      역할은 플레이북에 지정하는 구성을 지정된 네임스페이스 아래에 있는 기존 구성 파일의 구성 스니펫에 배치합니다. 다른 컨텍스트에서 역할을 실행할 때 다른 네임스페이스를 선택해야 합니다.
      sshd_config_file: /etc/ssh/sshd_config.d/<42-my_application>.conf
      sshd_config_file 변수에서 sshd 시스템 역할이 구성 옵션을 쓰는 .conf 파일을 정의합니다. 두 자리 접두사(예: 42- )를 사용하여 구성 파일을 적용할 순서를 지정합니다.
      AcceptEnv:

      OpenSSH 서버(sshd)가 클라이언트에서 허용할 환경 변수를 제어합니다.

      • LANG: 언어 및 로케일 설정을 정의합니다.
      • LS_COLORS: 터미널에서 ls 명령에 대한 표시 색상 체계를 정의합니다.
      • EDITOR: 편집기를 열어야 하는 명령줄 프로그램의 기본 텍스트 편집기를 지정합니다.

      플레이북에 사용된 역할 변수 및 OpenSSH 구성 옵션에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.sshd/README.md 파일 및 sshd_config(5) 매뉴얼 페이지를 참조하십시오.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. Playbook을 실행합니다.

    $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap

검증

  • SSH 서버의 구성을 확인합니다.

    • RHEL 8 이상을 실행하는 관리형 노드의 경우:

      # cat /etc/ssh/sshd_config
      ...
      # BEGIN sshd system role managed block: namespace <my_application>
      Match all
        AcceptEnv LANG LS_COLORS EDITOR
      # END sshd system role managed block: namespace <my_application>
      Copy to Clipboard Toggle word wrap
    • RHEL 9 이상을 실행하는 관리형 노드의 경우:

      # cat /etc/ssh/sshd_config.d/42-my_application.conf
      # Ansible managed
      #
      AcceptEnv LANG LS_COLORS EDITOR
      Copy to Clipboard Toggle word wrap

기본 암호화 설정이 특정 보안 또는 호환성 요구 사항을 충족하지 않는 경우 sshd RHEL 시스템 역할을 사용하여 OpenSSH 서버에서 시스템 전체 암호화 정책을 재정의할 수 있습니다. 특히 다음과 같은 주목할 만한 상황에서:

  • 이전 클라이언트와의 호환성: weaker-than-default 암호화 알고리즘, 키 교환 프로토콜 또는 암호를 사용해야 합니다.
  • 보다 강력한 보안 정책 강제: 동시에 약한 알고리즘을 비활성화할 수 있습니다. 이러한 조치는 특히 매우 안전하고 규제된 환경에서 기본 시스템 암호화 정책을 초과할 수 있습니다.
  • 성능 고려 사항: 시스템 기본값은 일부 시스템에 컴퓨팅적으로 집약적일 수 있는 더 강력한 알고리즘을 시행할 수 있습니다.
  • 특정 보안 요구 사항에 맞게 사용자 정의: 기본 암호화 정책에서 다루지 않는 고유한 요구 사항에 맞게 조정합니다.
주의

sshd RHEL 시스템 역할의 암호화 정책의 모든 측면을 덮어쓸 수 없습니다. 예를 들어 SHA-1 서명은 다른 계층에서 금지될 수 있으므로 보다 일반적인 솔루션의 경우 RHEL 시스템 역할을 사용하여 사용자 지정 암호화 정책 설정을 참조하십시오.

사전 요구 사항

프로세스

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    - name: Deploy SSH configuration for OpenSSH server
      hosts: managed-node-01.example.com
      tasks:
        - name: Overriding the system-wide cryptographic policy
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.sshd
          vars:
            sshd_sysconfig: true
            sshd_sysconfig_override_crypto_policy: true
            sshd_KexAlgorithms: ecdh-sha2-nistp521
            sshd_Ciphers: aes256-ctr
            sshd_MACs: hmac-sha2-512-etm@openssh.com
            sshd_HostKeyAlgorithms: rsa-sha2-512,rsa-sha2-256
    Copy to Clipboard Toggle word wrap

    예제 플레이북에 지정된 설정은 다음과 같습니다.

    sshd_KexAlgorithms
    키 교환 알고리즘을 선택할 수 있습니다. 예를 들어 ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1 또는 diffie-hellman-group-exchange-sha256.
    sshd_Ciphers
    암호(예: aes128-ctr,aes192-ctr ) 또는 aes256-ctr.
    sshd_MACs
    예를 들어 hmac-sha2-256,hmac-sha2-512 또는 hmac-sha1 과 같은 MAC을 선택할 수 있습니다.
    sshd_HostKeyAlgorithms
    공개 키 알고리즘(예: ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521 또는 ssh-rsa )을 선택할 수 있습니다.

    플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.sshd/README.md 파일을 참조하십시오.

    참고

    RHEL 9 관리 노드에서 시스템 역할은 암호화 옵션이 자동으로 적용되는 /etc/ssh/sshd_config.d/00-ansible_system_role.conf 파일에 구성을 씁니다. sshd_config_file 변수를 사용하여 파일을 변경할 수 있습니다. 그러나 구성이 효과적임을 확인하려면 구성된 암호화 정책을 포함하는 /etc/ssh/sshd_config.d/50-redhat.conf 파일 앞에 lexicographically 앞에 있는 파일 이름을 사용합니다.

    RHEL 8 관리 노드에서 sshd_sysconfig_override_crypto_policysshd_sysconfig 변수를 true 로 설정하여 재정의를 활성화해야 합니다.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. Playbook을 실행합니다.

    $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap

검증

  • 자세한 SSH 연결을 사용하여 절차의 성공 여부를 확인하고 다음 출력에서 정의된 변수를 확인할 수 있습니다.

    $ ssh -vvv <ssh_server>
    ...
    debug2: peer server KEXINIT proposal
    debug2: KEX algorithms: ecdh-sha2-nistp521
    debug2: host key algorithms: rsa-sha2-512,rsa-sha2-256
    debug2: ciphers ctos: aes256-ctr
    debug2: ciphers stoc: aes256-ctr
    debug2: MACs ctos: hmac-sha2-512-etm@openssh.com
    debug2: MACs stoc: hmac-sha2-512-etm@openssh.com
    ...
    Copy to Clipboard Toggle word wrap

ssh RHEL 시스템 역할 플레이북에서는 클라이언트 SSH 구성 파일의 매개변수를 정의할 수 있습니다.

이러한 설정을 지정하지 않으면 역할은 RHEL 기본값과 일치하는 글로벌 ssh_config 파일을 생성합니다.

모든 경우에 부울이 관리형 노드의 최종 구성에서 yes 또는 no 로 올바르게 렌더링됩니다. 목록을 사용하여 여러 줄 구성 항목을 정의할 수 있습니다. 예를 들면 다음과 같습니다.

LocalForward:
  - 22 localhost:2222
  - 403 localhost:4003
Copy to Clipboard Toggle word wrap

다음과 같이 렌더링됩니다.

LocalForward 22 localhost:2222
LocalForward 403 localhost:4003
Copy to Clipboard Toggle word wrap
참고

구성 옵션은 대소문자를 구분합니다.

1.7.6. ssh RHEL 시스템 역할을 사용하여 OpenSSH 클라이언트 구성

ssh RHEL 시스템 역할을 사용하여 여러 OpenSSH 클라이언트를 구성할 수 있습니다. 이를 통해 로컬 사용자는 이름을 확인하여 원격 OpenSSH 서버와의 보안 연결을 설정할 수 있습니다.

  • 보안 연결 시작
  • 인증 정보 프로비저닝
  • 보안 통신 채널에 사용되는 암호화 방법의 OpenSSH 서버와의 협상
  • OpenSSH 서버로 파일을 안전하게 보낼 수 있는 기능
참고

SSH 구성을 변경하는 다른 시스템 역할과 함께 ssh RHEL 시스템 역할을 사용할 수 있습니다(예: Identity Management RHEL 시스템 역할). 구성을 덮어쓰지 않도록 하려면 ssh RHEL 시스템 역할에 드롭인 디렉터리(RHEL 8 이상에서 기본값)를 사용해야 합니다.

사전 요구 사항

프로세스

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    ---
    - name: SSH client configuration
      hosts: managed-node-01.example.com
      tasks:
        - name: Configure ssh clients
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.ssh
          vars:
            ssh_user: root
            ssh:
              Compression: true
              GSSAPIAuthentication: no
              ControlMaster: auto
              ControlPath: ~/.ssh/.cm%C
              Host:
                - Condition: example
                  Hostname: server.example.com
                  User: user1
            ssh_ForwardX11: no
    Copy to Clipboard Toggle word wrap

    예제 플레이북에 지정된 설정은 다음과 같습니다.

    ssh_user: root
    특정 구성 관련 정보를 사용하여 관리 노드에서 root 사용자의 SSH 클라이언트 기본 설정을 구성합니다.
    압축: true
    압축이 활성화됩니다.
    ControlMaster: auto
    ControlMaster 멀티플렉싱이 auto 로 설정되어 있습니다.
    호스트
    user1 이라는 사용자로 server. example.com 호스트에 연결하기 위한 별칭 예제를 생성합니다.
    ssh_ForwardX11: no
    X11 전달이 비활성화되어 있습니다.

    플레이북에 사용된 역할 변수 및 OpenSSH 구성 옵션에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.ssh/README.md 파일 및 ssh_config(5) 매뉴얼 페이지를 참조하십시오.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. Playbook을 실행합니다.

    $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap

검증

  • SSH 구성 파일을 표시하여 관리 노드에 올바른 구성이 있는지 확인합니다.

    # cat ~/root/.ssh/config
    # Ansible managed
    Compression yes
    ControlMaster auto
    ControlPath ~/.ssh/.cm%C
    ForwardX11 no
    GSSAPIAuthentication no
    Host example
      Hostname example.com
      User user1
    Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat