SSH 점검
개요
SSH 점검은 에이전트리스(agent-less) 모니터링으로 수행됩니다. SSH 점검에는 Zabbix agent가 필요하지 않습니다.
SSH 점검을 수행하려면 Zabbix server가 사전에 SSH2 지원(libssh 또는 libssh2)이 구성되어 있어야 합니다. 다음도 참고하십시오: 요구 사항.
RHEL 8부터는 libssh만 지원됩니다. 다른 배포판의 경우 libssh2보다 libssh 사용을 권장합니다.
구성
패스프레이즈 인증
SSH 점검은 두 가지 인증 방식, 즉 사용자/비밀번호 쌍 방식과 키 파일 기반 방식을 제공합니다.
키를 사용할 계획이 없다면, 소스에서 빌드하는 경우 Zabbix에 libssh 또는 libssh2를 연결하는 것 외에 추가 구성이 필요하지 않습니다.
키 파일 인증
SSH 항목에 키 기반 인증을 사용하려면 서버 구성에 특정 변경이 필요합니다.
Zabbix server 구성 파일
(zabbix_server.conf)을 root 권한으로 열고
다음 줄을 찾으십시오:
# SSHKeyLocation=
주석을 해제하고 공개 키와 개인 키가 위치할 폴더의 전체 경로를 설정하십시오:
SSHKeyLocation=/home/zabbix/.ssh
파일을 저장한 후 Zabbix server를 재시작하십시오.
여기서 /home/zabbix 경로는 zabbix 사용자 계정의 홈 디렉터리이며, .ssh는 ssh-keygen 명령이 홈 디렉터리 안에 기본적으로 공개 키와 개인 키를 생성하는 디렉터리입니다.
일반적으로 다양한 OS 배포판의 Zabbix server 설치 패키지는 zabbix 사용자 계정을 (시스템 계정과 마찬가지로) 다른 위치, 예를 들어 /var/lib/zabbix를 홈 디렉터리로 하여 생성합니다.
키를 생성하기 전에, 위에서 언급한 Zabbix server 구성 매개변수인 SSHKeyLocation과
일치하도록 홈 디렉터리를 /home/zabbix로 재할당할 수 있습니다.
설치 문서에 따라 zabbix 계정이 수동으로 추가된 경우 다음 단계는 건너뛸 수 있습니다. 이 경우 zabbix 계정의 홈 디렉터리는 이미 /home/zabbix일 가능성이 높습니다.
zabbix 사용자 계정의 홈 디렉터리를 변경하려면, 이를 사용 중인 모든 작업 프로세스를 먼저 중지해야 합니다:
systemctl stop zabbix-agent
systemctl stop zabbix-server
기존 홈 디렉터리를 이동시키면서 위치를 변경하려면(디렉터리가 존재하는 경우) 다음 명령을 실행해야 합니다:
usermod -m -d /home/zabbix zabbix
기존 위치에 홈 디렉터리가 존재하지 않았을 수도 있으므로, 그 경우 새 위치에 생성해야 합니다. 안전하게 시도하는 방법은 다음과 같습니다:
test -d /home/zabbix || mkdir /home/zabbix
모든 것이 안전한지 확인하기 위해 홈 디렉터리에 권한을 설정하는 추가 명령을 실행할 수 있습니다:
chown zabbix:zabbix /home/zabbix
chmod 700 /home/zabbix
이전에 중지했던 프로세스를 다시 시작할 수 있습니다:
systemctl start zabbix-agent
systemctl start zabbix-server
이제 다음 명령으로 공개 키와 개인 키를 생성하는 단계를 수행할 수 있습니다 (가독성을 위해 명령 프롬프트는 주석 처리되어 있습니다):
sudo -u zabbix ssh-keygen -t rsa
# Generating public/private rsa key pair.
# Enter file in which to save the key (/home/zabbix/.ssh/id_rsa):
/home/zabbix/.ssh/id_rsa
# Enter passphrase (empty for no passphrase):
<Leave empty>
# Enter same passphrase again:
<Leave empty>
# Your identification has been saved in /home/zabbix/.ssh/id_rsa.
# Your public key has been saved in /home/zabbix/.ssh/id_rsa.pub.
# The key fingerprint is:
# 90:af:e4:c7:e3:f0:2e:5a:8d:ab:48:a2:0c:92:30:b9 zabbix@it0
# The key's randomart image is:
# +--[ RSA 2048]----+
# | |
# | . |
# | o |
# | . o |
# |+ . S |
# |.+ o = |
# |E . * = |
# |=o . ..* . |
# |... oo.o+ |
# +-----------------+
공개 키와 개인 키(id_rsa.pub 및 id_rsa)는
기본적으로 /home/zabbix/.ssh 디렉터리에 생성되었으며,
이는 Zabbix server의 SSHKeyLocation 구성 매개변수와 일치합니다.
"rsa" 이외의 키 유형도 ssh-keygen 도구와 SSH 서버에서 지원될 수 있으나, Zabbix가 사용하는 libssh2에서는 지원되지 않을 수 있습니다.
셸 구성 형식
이 단계는 SSH 점검으로 모니터링될 각 호스트에 대해 한 번만 수행하면 됩니다.
다음 명령을 사용하면 공개 키 파일을 원격 호스트 10.10.10.10에 설치하여 root 계정으로 SSH 점검을 수행할 수 있습니다 (가독성을 위해 명령 프롬프트는 주석 처리되어 있습니다):
sudo -u zabbix ssh-copy-id root@10.10.10.10
# The authenticity of host '10.10.10.10 (10.10.10.10)' can't be established.
# RSA key fingerprint is 38:ba:f2:a4:b5:d9:8f:52:00:09:f7:1f:75:cc:0b:46.
# Are you sure you want to continue connecting (yes/no)?
yes
# Warning: Permanently added '10.10.10.10' (RSA) to the list of known hosts.
# root@10.10.10.10's password:
<Enter root password>
# Now try logging into the machine, with "ssh 'root@10.10.10.10'",
# and check to make sure that only the key(s) you wanted were added.
이제 zabbix 사용자 계정의 기본 개인 키(/home/zabbix/.ssh/id_rsa)를 사용하여 SSH 로그인을 확인할 수 있습니다:
sudo -u zabbix ssh root@10.10.10.10
로그인이 성공하면 셸에서의 구성 부분은 완료된 것이며 원격 SSH 세션을 종료할 수 있습니다.
항목 구성
실행할 명령은 항목 구성의 Executed script 필드에 입력해야 합니다. 여러 명령은 각각을 새 줄에 배치하여 순서대로 실행할 수 있습니다. 이 경우 반환 값도 여러 줄로 형식화됩니다.

모든 필수 입력 필드는 빨간색 별표로 표시되어 있습니다.
SSH 항목에 필요한 필드는 다음과 같습니다:
| 매개변수 | 설명 | 참고 |
|---|---|---|
| Type | 여기서 SSH agent를 선택합니다. | |
| Key | 다음 형식의 (호스트당) 고유 항목 키: ssh.run[unique short description,<ip>,<port>,<encoding>,<ssh options>,<subsystem>] | unique short description은 필수이며 호스트별 각 SSH 항목마다 고유해야 합니다. 기본 포트는 이 항목이 할당된 인터페이스에 지정된 포트가 아니라 22입니다. ssh options는 key1=value1;key2=value2,value3 형식으로 추가 SSH 옵션을 전달할 수 있게 해줍니다. 하나의 키에 대한 여러 값은 쉼표로 구분하여 전달할 수 있으며(이 경우 매개변수는 따옴표로 묶어야 합니다), 여러 옵션 키는 세미콜론으로 구분하여 전달할 수 있습니다. 다음 옵션 키가 지원됩니다: KexAlgorithms, HostkeyAlgorithms, Ciphers, MACs, PubkeyAcceptedKeyTypes. 옵션 키와 값 지원 여부는 사용 중인 SSH 라이브러리에 따라 다릅니다(예: PubkeyAcceptedKeyTypes는 libssh에서만 지원됨). 옵션이 지원되지 않으면 오류가 반환되고 항목이 지원되지 않는 상태(unsupported)가 됩니다.GnuTLS와 OpenSSL에서와 같이 암호 설정을 추가하는 "+" 기호와 특정 암호 설정을 비활성화하는 "!" 기호는 지원되지 않는다는 점에 유의하십시오. 예시: => ssh.run[KexAlgorithms,127.0.0.1,,,Ciphers=aes128-ctr]=> ssh.run[KexAlgorithms,,,,"KexAlgorithms=diffie-hellman-group1-sha1;HostkeyAlgorithms=ssh-rsa,ssh-dss,ecdh-sha2-nistp256"]=> ssh.run[PubkeyAcceptedKeyTypes,127.0.0.1,,,PubkeyAcceptedKeyTypes=ssh-rsa]subsystem은 SSH 서브시스템을 전달하여 SSH 연결을 해당 서브시스템에서 허용하는 특정 작업(예: SFTP를 이용한 파일 전송이나 NETCONF를 이용한 네트워크 장비 관리)으로 제한할 수 있게 해줍니다. 서브시스템을 사용하는 경우 Executed script 매개변수에도 특정 스크립트 구문이 필요할 수 있다는 점에 유의하십시오. 예시: => ssh.run[SFTPBackup,192.0.2.18,,,,sftp]=> ssh.run[Cisco1234,192.0.2.18,,,,netconf] |
| Authentication method | "Password" 또는 "Public key" 중 하나입니다. | |
| User name | 원격 호스트 인증에 사용할 사용자 이름(최대 255자). 필수 항목입니다. | |
| Public key file | Authentication method가 "Public key"인 경우 공개 키 파일 이름. 필수 항목입니다. | 예시: id_rsa.pub - ssh-keygen 명령이 생성하는 기본 공개 키 파일 이름입니다. |
| Private key file | Authentication method가 "Public key"인 경우 개인 키 파일 이름. 필수 항목입니다. | 예시: id_rsa - 기본 개인 키 파일 이름입니다. |
| Password 또는 Key passphrase |
인증에 사용할 비밀번호(최대 255자) 또는 개인 키에 사용된 경우 해당 패스프레이즈. |
패스프레이즈를 사용하지 않은 경우 Key passphrase 필드는 비워 두십시오. 패스프레이즈 사용과 관련해서는 알려진 문제도 참고하십시오. |
| Executed script | SSH 원격 세션을 사용해 실행할 셸 명령입니다. | 실행된 셸 명령의 반환 값은 16MB로 제한됩니다(잘리는 후행 공백 포함). 데이터베이스 제한도 적용됩니다. libssh2 라이브러리는 실행 스크립트를 약 32kB로 자를 수 있다는 점에 유의하십시오. 예시: date +%ssystemctl status mysql-server`ps auxww |