15.2. sshd 시스템 역할을 사용하여 OpenSSH 서버 구성
sshd 시스템 역할을 사용하여 Ansible 플레이북을 실행하여 여러 SSH 서버를 구성할 수 있습니다.
SSH 및 SSHD 구성을 변경하는 다른 시스템 역할에 sshd 시스템 역할을 사용할 수 있습니다(예: Identity Management RHEL 시스템 역할). 구성을 덮어쓰지 않으려면 sshd 역할이 네임스페이스(RHEL 8 및 이전 버전) 또는 RHEL 9( 드롭인 디렉터리)를 사용하는지 확인합니다.
사전 요구 사항
-
sshd시스템 역할로 구성하려는 시스템인 하나 이상의 관리형 노드에 대한 액세스 및 권한. Red Hat Ansible Core가 기타 시스템을 구성하는 시스템인 제어 노드 액세스 및 사용 권한.
제어 노드에서 다음을 수행합니다.
-
ansible-core및rhel-system-roles패키지가 설치됩니다.
-
RHEL 8.0-8.5는 Ansible 기반 자동화를 위해 Ansible Engine 2.9가 포함된 별도의 Ansible 리포지토리에 대한 액세스를 제공했습니다. Ansible Engine에는 ansible, ansible-playbook, docker 및 podman과 같은 커넥터, 여러 플러그인 및 모듈과 같은 명령줄 유틸리티가 포함되어 있습니다. Ansible Engine을 확보하고 설치하는 방법에 대한 자세한 내용은 Red Hat Ansible Engine 지식베이스 문서를 다운로드하고 설치하는 방법을 참조하십시오.
RHEL 8.6 및 9.0에서는 Ansible 명령줄 유틸리티, 명령 및 소규모의 기본 제공 Ansible 플러그인 세트가 포함된 Ansible Core( ansible-core 패키지로 제공)를 도입했습니다. RHEL은 AppStream 리포지토리를 통해 이 패키지를 제공하며 제한된 지원 범위를 제공합니다. 자세한 내용은 RHEL 9 및 RHEL 8.6 이상 AppStream 리포지토리 지식 베이스에 포함된 Ansible Core 패키지에 대한 지원 범위에 대한 지식베이스 문서를 참조하십시오.
- 관리 노드를 나열하는 인벤토리 파일.
절차
sshd시스템 역할에 대한 예제 플레이북을 복사합니다.# cp /usr/share/doc/rhel-system-roles/sshd/example-root-login-playbook.yml path/custom-playbook.yml텍스트 편집기를 사용하여 복사된 플레이북을 엽니다. 예를 들면 다음과 같습니다.
# vim path/custom-playbook.yml --- - hosts: all tasks: - name: Configure sshd to prevent root and password login except from particular subnet include_role: name: rhel-system-roles.sshd vars: sshd: # root login and password login is enabled only from a particular subnet PermitRootLogin: no PasswordAuthentication: no Match: - Condition: "Address 192.0.2.0/24" PermitRootLogin: yes PasswordAuthentication: yes플레이북은 다음을 수행하도록 구성된 SSH 서버로 관리 노드를 구성합니다.
-
암호 및
root사용자 로그인이 비활성화되어 있습니다 -
암호 및
root사용자 로그인은 서브넷192.0.2.0/24에서만 활성화됩니다.
환경 설정에 따라 변수를 수정할 수 있습니다. 자세한 내용은 sshd 시스템 역할 변수를 참조하십시오.
-
암호 및
선택사항: 플레이북 구문 확인.
# ansible-playbook --syntax-check path/custom-playbook.yml인벤토리 파일에서 플레이북을 실행합니다.
# ansible-playbook -i inventory_file path/custom-playbook.yml ... PLAY RECAP ************************************************** localhost : ok=12 changed=2 unreachable=0 failed=0 skipped=10 rescued=0 ignored=0
검증
SSH 서버에 로그인합니다.
$ ssh user1@10.1.1.1다음과 같습니다.
-
user1은 SSH 서버의 사용자입니다. -
10.1.1.1은 SSH 서버의 IP 주소입니다.
-
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 yes192.0.2.0/24서브넷에서 root로 서버에 연결할 수 있는지 확인합니다.IP 주소를 확인합니다.
$ hostname -I 192.0.2.1IP 주소가
192.0.2.1-192.0.2.254범위 내에 있는 경우 서버에 연결할 수 있습니다.root로 서버에 연결합니다 :$ ssh root@10.1.1.1