더북(TheBook)

SSH 공개키 인증 시스템 사용하기

퍼펫을 이용해서 호스트들이 자동으로 SSH 공개키 인증 시스템을 사용할 수 있도록 해봅시다. 모듈 디렉터리 modules/sshd를 생성합니다. 매니페스트 파일 modules/sshd/manifests/init.pp에 클래스를 선언하고 SSH 서버 설정 파일 ‘sshd_config’는 modules/sshd/files 디렉터리에 저장해서 일괄 배포합니다(그림 10-7).

그림 10-7 sshd 모듈의 매니페스트 디렉터리 구조

설치할 openssh 서버 패키지 버전 정보를 확인합니다.

shinjaehun@losttemple:~$ apt-cache policy openssh-server
openssh-server:
  설치: (없음)
  후보: 1:6.6p1-2ubuntu2
  버전 테이블:
 *** 1:6.6p1-2ubuntu2 0
        500 http://ftp.daum.net/ubuntu/ trusty-updates/main i386 Packages
     1:6.6p1-2ubuntu2 0
        500 http://ftp.daum.net/ubuntu/ trusty/main i386 Packages

퍼펫 마스터 서버에 매니페스트 파일을 저장할 모듈 디렉터리를 만들고 클래스를 선언하기 위한 매니페스트를 생성합니다.

shinjaehun@losttemple:~$ sudo mkdir -p /etc/puppet/modules/sshd/manifests
shinjaehun@losttemple:~$ sudo vi /etc/puppet/modules/sshd/manifests/init.pp

sshd 클래스를 다음과 같이 작성합니다. 먼저 package 리소스로 openssh-server 패키지를 설치합니다. 처음 등장하는 service 리소스는 서비스를 제어합니다. ensure 속성으로 서비스를 시작(running)하거나, 중지(stopped)할 수 있습니다.

sshdconfig는 SSH 서버 설정 파일 /etc/ssh/sshd_config를 배포하기 위한 file 리소스입니다. 중요한 속성은 notify입니다. 이 속성은 지정한 리소스( service)보다 먼저 해당 리소스를 적용하는데 변경이 있으면 지정한 리소스를 갱신합니다. 즉, 설정 파일 ‘sshd_config’에 변경이 있으면 SSH 서비스를 다시 시작할 것입니다.

마지막 file 리소스는 preseed로 자동 설치하는 과정에서 배포한 호스트 관리자 계정의 공개키인 authorized_keys에 대한 소유권과 접근 권한을 설정합니다.

class sshd {

   package { 'openssh-server':
       ensure => ‘1:6.6p1-2ubuntu2’,
   }

   service { 'ssh':
  ensure => running,
  subscribe => File[‘sshdconfig’],
        require => Package['openssh-server'],
   }

   file { 'sshdconfig':
        name => '/etc/ssh/sshd_config',
        owner => root,
        group => root,
        mode => 644,
        source => 'puppet:///modules/sshd/sshd_config',
        require => Package['openssh-server'],
  notify => Service['ssh'],
   }

   file { '/home/administrator/.ssh/authorized_keys':
  owner => administrator,
  group => administrator,
  mode => 600,
   }

}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.