12.5. 호스트의 공개 SSH 키 관리
OpenSSH는 공개 키를 사용하여 호스트를 인증합니다. 한 시스템에서 다른 시스템에 액세스를 시도하고 해당 키 쌍을 표시합니다. 호스트가 처음 인증될 때 대상 시스템의 관리자는 요청을 수동으로 승인해야 합니다. 그런 다음 시스템은
known_hosts
파일에 호스트의 공개 키를 저장합니다. 원격 시스템이 대상 시스템에 다시 액세스하려고 할 때마다 대상 시스템은 known_hosts
파일을 확인한 다음 승인된 호스트에 대한 액세스 권한을 자동으로 부여합니다.
이 시스템에는 몇 가지 문제가 있습니다.
known_hosts
파일은 호스트 IP 주소, 호스트 이름 및 키의 중단에 호스트 항목을 저장합니다. 이 파일은 IP 주소가 변경되거나(가상 환경 및 데이터 센터에서 일반적으로) 키가 업데이트되는 경우 최신 상태가 될 수 있습니다.- SSH 키는 환경의 모든 시스템에 수동 및 별도로 배포해야 합니다.
- 관리자는 호스트 키를 승인하여 구성에 추가할 수 있지만, 호스트 또는 키 발행자를 올바르게 확인하여 보안 문제를 생성할 수 있습니다.
Red Hat Enterprise Linux에서 SSSD(System Security Services Daemon)는 호스트 SSH 키를 캐시 및 검색하여 애플리케이션 및 서비스가 호스트 키의 한 위치만 찾도록 구성할 수 있습니다. SSSD는 ID 정보 공급자 중 하나로 Identity Management를 사용할 수 있으므로 Identity Management는 키의 범용이고 중앙 집중식 리포지토리를 제공합니다. 관리자는 호스트 SSH 키 배포, 업데이트 또는 확인에 대해 걱정할 필요가 없습니다.
12.5.1. SSH 키 형식 정보
키가 IdM 항목에 업로드되면 키 형식은 OpenSSH 스타일 키 또는 원시 RFC 4253 스타일 Blob 일 수 있습니다. 모든 RFC 4253 스타일 키는 IdM LDAP 서버에 가져와 저장하기 전에 자동으로 OpenSSH 스타일 키로 변환됩니다.
IdM 서버는 업로드된 키 Blob에서 RSA 또는 DSA 키와 같은 키 유형을 식별할 수 있습니다. 그러나
~/.ssh/known_hosts
와 같은 키 파일에서 키 항목은 서버의 호스트 이름 및 IP 주소, 해당 유형, 키 자체로 식별됩니다. 예를 들어 다음과 같습니다.
host.example.com,1.2.3.4 ssh-rsa AAA...ZZZ==
이 키 항목은 순서 유형 key== 주석에 요소가 있는 사용자 공개 키 항목과 약간 다릅니다.
"ssh-rsa ABCD1234...== ipaclient.example.com"
키 파일에서 세 부분 모두 에 업로드하고 호스트 항목에 대해 볼 수 있습니다. 이 경우
~/.ssh/known_hosts
파일의 호스트 공개 키 항목을 사용자 키의 형식과 일치하도록 다시 정렬해야 합니다. key= comment:
ssh-rsa AAA...ZZZ== host.example.com,1.2.3.4
키 유형은 공개 키의 콘텐츠에서 자동으로 결정할 수 있으며, 주석은 개별 키를 쉽게 식별할 수 있도록 선택 사항입니다. 유일한 필수 요소는 공개 키 Blob 자체입니다.
12.5.2. ipa-client-install 및 OpenSSH 정보
기본적으로 ipa-client-install 스크립트는 IdM 클라이언트 시스템에 OpenSSH 서버 및 클라이언트를 구성합니다. 또한 호스트 및 사용자 키 캐싱을 수행하도록 SSSD를 구성합니다. 기본적으로 클라이언트 구성은 호스트에서 키 캐싱 및 검색에 SSSD, OpenSSH 및 Identity Management를 사용하는 데 필요한 모든 구성을 수행합니다.
클라이언트 설치(기본값)를 사용하여 SSH 서비스를 활성화하면 ssh 서비스가 처음 시작될 때 RSA 키가 생성됩니다.
참고
ipa-client-install 을 사용하여 시스템을 IdM 클라이언트로 추가하면 클라이언트가 RSA 및ECDHE의 두 개의 SSH 키를 사용하여 생성됩니다.
추가 클라이언트 구성 옵션인
--ssh-trust-dns
가 있습니다. 이 옵션은 ipa-client-install 을 사용하여 실행할 수 있으며 키 지문이 저장된 IdM DNS 레코드를 신뢰하도록 OpenSSH를 자동으로 구성합니다.
또는
--no-sshd
옵션을 사용하여 클라이언트를 설치할 때 OpenSSH를 비활성화할 수 있습니다. 이렇게 하면 설치 스크립트가 OpenSSH 서버를 구성하지 못합니다.
또 다른 옵션인
--no-dns-sshfp
를 사용하면 호스트가 자체 DNS 항목을 사용하여 DNS SSHFP 레코드를 생성하지 못합니다. 이 옵션은 --no-sshd
옵션과 함께 사용하거나 사용하지 않고 사용할 수 있습니다.
12.5.3. 웹 UI를 통해 호스트 SSH 키 업로드
- 호스트의 키는
~/.ssh/known_hosts
에서 검색할 수 있습니다. 예를 들어 다음과 같습니다.server.example.com,1.2.3.4 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEApvjBvSFSkTU0WQW4eOweeo0DZZ08F9Ud21xlLy6FOhzwpXFGIyxvXZ52+siHBHbbqGL5+14N7UvElruyslIHx9LYUR/pPKSMXCGyboLy5aTNl5OQ5EHwrhVnFDIKXkvp45945R7SKYCUtRumm0Iw6wq0XD4o+ILeVbV3wmcB1bXs36ZvC/M6riefn9PcJmh6vNCvIsbMY6S+FhkWUTTiOXJjUDYRLlwM273FfWhzHK+SSQXeBp/zIn1gFvJhSZMRi9HZpDoqxLbBB9QIdIw6U4MIjNmKsSI/ASpkFm2GuQ7ZK9KuMItY2AoCuIRmRAdF8iYNHBTXNfFurGogXwRDjQ==
필요한 경우 호스트 키를 생성합니다. OpenSSH 툴을 사용하는 경우 빈 암호를 사용하고 사용자~/.ssh/
디렉터리가 아닌 다른 위치에 키를 저장하려면 기존 키를 덮어쓰지 않도록 해야 합니다.[jsmith@server ~]$ ssh-keygen -t rsa -C "server.example.com,1.2.3.4" Generating public/private rsa key pair. Enter file in which to save the key (/home/jsmith/.ssh/id_rsa): /home/jsmith/.ssh/host_keys Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/jsmith/.ssh/host_keys. Your public key has been saved in /home/jsmith/.ssh/host_keys.pub. The key fingerprint is: SHA256:GAUIDVVEgly7rs1lTWP6oguHz8BKvyZkpqCqVSsmi7c server.example.com The key's randomart image is: +--[ RSA 2048]----+ | .. | | .+| | o .* | | o . .. *| | S + . o+| | E . .. .| | . = . o | | o . ..o| | .....| +-----------------+
- 키 파일에서 공개 키를 복사합니다. 전체 키 항목의 형식은 호스트 이름,IP 유형 key== 입니다. key== 만 필요하지만 전체 항목을 저장할 수 있습니다. 항목의 모든 요소를 사용하려면 주문 유형 key= [host name,IP]가 있도록 항목을 다시 정렬합니다.
[jsmith@server ~]$ cat /home/jsmith/.ssh/host_keys.pub ssh-rsa AAAAB3NzaC1yc2E...tJG1PK2Mq++wQ== server.example.com,1.2.3.4
- Identity (ID) 탭을 열고 Hosts (호스트)를 선택합니다.
- 편집할 호스트 이름을 클릭합니다.
그림 12.4. 호스트 목록
- Settings 탭의 Host Settings 영역에서 SSH 공개 키 옆에 있는 추가 를 클릭합니다.
그림 12.5. SSH 키 추가
- 호스트의 공개 키에 붙여넣고클릭합니다.
그림 12.6. SSH 키 설정
이제 SSH 공개 키 영역에 새 키가 표시됩니다. Show/Set 키를 클릭하면 제출된 키가 열립니다. - 여러 키를 업로드하려면 공개 키 목록 아래의 추가 링크를 클릭하고 다른 키를 업로드합니다.
- 모든 키가 제출되면 호스트 페이지 상단에서 저장 을 클릭하여 변경 사항을 저장합니다.
공개 키가 저장되면 항목이 키 지문으로 표시되고, 주석(포함된 경우), 키 유형[2].
호스트 키를 업로드한 후 Identity Management를 ID 도메인 중 하나로 사용하도록 SSSD를 구성하고 22.6절. “OpenSSH 서비스에 캐시를 제공하도록 SSSD 구성” 에서 다루는 호스트 키 관리에 SSSD 툴링을 사용하도록 OpenSSH를 설정합니다.
12.5.4. 명령줄에서 호스트 키 추가
호스트 SSH 키는 호스트 추가를 사용하여 호스트를 생성할 때 또는 나중에 항목을 수정하여 IdM의 호스트 항목에 추가됩니다.
참고
RSA 및ECDHE 호스트 키는 설치 스크립트에서 SSH 서비스가 명시적으로 비활성화되지 않는 한
ipa-client-install
명령으로 생성됩니다.
--sshpubkey
옵션과 함께 host-mod 명령을 실행하여 base64로 인코딩된 공개 키를 호스트 항목에 업로드합니다.호스트 키를 추가하면 호스트의 DNS SSHFP 항목도 변경되므로--updatedns
옵션을 사용하여 호스트의 DNS 항목을 업데이트합니다.예를 들어 다음과 같습니다.[jsmith@server ~]$ ipa host-mod --sshpubkey="ssh-rsa RjlzYQo==" --updatedns host1.example.com
실제 키는 일반적으로 등호(=)로 종료되지만 더 길어집니다.두 개 이상의 키를 업로드하려면--sshpubkey
명령줄 매개변수를 여러 개 입력하십시오.--sshpubkey="RjlzYQo==" --sshpubkey="ZEt0TAo=="
참고호스트에는 공개 키가 여러 개 있을 수 있습니다.- 호스트 키를 업로드한 후 Identity Management를 ID 도메인 중 하나로 사용하도록 SSSD를 구성하고 22.6절. “OpenSSH 서비스에 캐시를 제공하도록 SSSD 구성” 에서 다루는 호스트 키 관리에 SSSD 툴링을 사용하도록 OpenSSH를 설정합니다.
12.5.5. 호스트 키 제거
호스트 키는 만료되면 제거할 수 있거나 더 이상 유효하지 않습니다.
개별 호스트 키를 제거하려면 웹 UI를 통해 키를 제거하는 것이 가장 쉽습니다.
- Identity (ID) 탭을 열고 Hosts (호스트)를 선택합니다.
- 편집할 호스트 이름을 클릭합니다.
그림 12.7. 호스트 목록
- SSH 공개 키 영역에서 키 지문으로 삭제 를 클릭하여 제거합니다.
그림 12.8. 공개 키 삭제
- 호스트 페이지 상단에서 저장 을 클릭하여 변경 사항을 저장합니다.
명령줄 툴을 사용하여 모든 키를 제거할 수 있습니다. 이 작업은
--sshpubkey=
가 빈 값으로 설정된 ipa host-mod 를 실행하여 수행됩니다. 그러면 호스트의 모든 공개 키가 제거됩니다. 또한 --updatedns
옵션을 사용하여 호스트의 DNS 항목을 업데이트합니다. 예를 들어 다음과 같습니다.
[jsmith@server ~]$ kinit admin [jsmith@server ~]$ ipa host-mod --sshpubkey= --updatedns host1.example.com