문서
원본 보기11 SSH 에이전트
개요
SSH 검사는 에이전트 없는 모니터링으로 수행됩니다. SSH 검사에는 Zabbix 에이전트가 필요하지 않습니다.
SSH 검사를 수행하려면 Zabbix 서버가 SSH2 지원(libssh 또는 libssh2)으로 초기에 구성되어야 합니다. 다음도 참고하세요: 요구사항.
RHEL 8부터는 libssh만 지원됩니다. 다른 배포판의 경우, libssh2보다 libssh가 권장됩니다.
구성
패스프레이즈 인증
SSH 검사는 두 가지 인증 방법을 제공합니다 - 사용자/비밀번호 쌍과 키 파일 기반.
키를 사용하지 않으려는 경우, 소스에서 빌드하는 경우 libssh 또는 libssh2를 Zabbix에 연결하는 것 외에는 추가 구성이 필요하지 않습니다.
키 파일 인증
SSH 아이템에 대해 키 기반 인증을 사용하려면 서버 구성에 특정 변경이 필요합니다.
Zabbix 서버 구성 파일(zabbix_server.conf)을 root로 열고 다음 줄을 찾으세요:
# SSHKeyLocation=
주석을 해제하고 공개 키와 개인 키가 위치할 폴더의 전체 경로를 설정하세요:
SSHKeyLocation=/home/zabbix/.ssh
파일을 저장하고 이후에 Zabbix 서버를 재시작하세요.
여기서 /home/zabbix 경로는 zabbix 사용자 계정의 홈 디렉토리이고, .ssh은 기본적으로 홈 디렉토리 내에서 ssh-keygen 명령에 의해 공개 키와 개인 키가 생성될 디렉토리입니다.
일반적으로 다른 OS 배포판의 Zabbix 서버 설치 패키지는 zabbix 사용자 계정을 다른 곳에 홈 디렉토리로 생성합니다. 예를 들어 /var/lib/zabbix (시스템 계정의 경우).
키를 생성하기 전에 홈 디렉토리를 /home/zabbix로 재할당할 수 있습니다. 그래야 위에서 언급한 Zabbix 서버 구성 매개변수 SSHKeyLocation과 일치합니다.
설치 섹션에 따라 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):
<비워둠>
# Enter same passphrase again:
<비워둠>
# 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 서버 SSHKeyLocation 구성 매개변수와 일치합니다.
"rsa" 이외의 키 유형은 ssh-keygen 도구와 SSH 서버에서 지원될 수 있지만 Zabbix에서 사용하는 libssh2에서는 지원되지 않을 수 있습니다.
셸 구성 양식
이 단계는 SSH 검사로 모니터링될 모든 호스트에 대해 한 번만 수행되어야 합니다.
다음 명령을 사용하여 공개 키 파일을 원격 호스트 10.10.10.10에 설치할 수 있습니다. 그래야 SSH 검사를 root 계정으로 수행할 수 있습니다 (가독성을 위해 명령 프롬프트는 주석 처리됨):
sudo -u zabbix ssh-copy-id [email protected]
# 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.
# [email protected]'s password:
<root 비밀번호 입력>
# Now try logging into the machine, with "ssh '[email protected]'",
# 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 [email protected]
로그인이 성공하면 셸에서 구성 부분이 완료된 것이며 원격 SSH 세션을 닫을 수 있습니다.
아이템 구성
실행할 실제 명령은 아이템 구성의 실행 스크립트 필드에 배치해야 합니다. 여러 명령을 새 줄에 배치하여 하나씩 차례로 실행할 수 있습니다. 이 경우 반환 값도 여러 줄로 형식이 지정됩니다.

모든 필수 입력 필드는 빨간색 별표로 표시됩니다.
SSH 아이템에 대한 특정 정보가 필요한 필드들은 다음과 같습니다:
| 매개변수 | 설명 | 주석 |
|---|---|---|
| 유형 | 여기에서 SSH 에이전트를 선택하세요. | |
| 키 | ssh.run[고유 짧은 설명,<ip>,<포트>,<인코딩>,<ssh 옵션>] 형식의 (호스트당) 고유 아이템 키 | 고유 짧은 설명은 필수이며 호스트당 각 SSH 아이템에 대해 고유해야 합니다. 기본 포트는 22이며, 이 아이템이 할당된 인터페이스에 지정된 포트가 아닙니다. ssh 옵션은 key1=value1;key2=value2,value3 형식으로 추가 SSH 옵션을 전달할 수 있습니다. 하나의 키에 대한 여러 값은 쉼표로 구분하여 전달할 수 있습니다(이 경우 매개변수는 따옴표로 묶어야 함); 여러 옵션 키는 세미콜론으로 구분하여 전달할 수 있습니다. 다음 옵션 키가 지원됩니다: KexAlgorithms, HostkeyAlgorithms, Ciphers, MACs. 옵션 키와 값 지원은 SSH 라이브러리에 따라 다릅니다; 옵션이 지원되지 않으면 오류가 반환되고 아이템이 지원되지 않게 됩니다.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"] |
| 인증 방법 | "비밀번호" 또는 "공개 키" 중 하나. | |
| 사용자 이름 | 원격 호스트에서 인증할 사용자 이름(최대 255자). 필수. | |
| 공개 키 파일 | 인증 방법이 "공개 키"인 경우 공개 키의 파일 이름. 필수. | 예: id_rsa.pub - ssh-keygen 명령으로 생성된 기본 공개 키 파일 이름. |
| 개인 키 파일 | 인증 방법이 "공개 키"인 경우 개인 키의 파일 이름. 필수. | 예: id_rsa - 기본 개인 키 파일 이름. |
| 비밀번호 또는 키 패스프레이즈 |
인증용 비밀번호(최대 255자) 또는 개인 키에 사용된 경우 패스프레이즈. |
패스프레이즈를 사용하지 않은 경우 키 패스프레이즈 필드를 비워두세요. 패스프레이즈 사용에 관한 알려진 문제도 참조하세요. |
| 실행 스크립트 | SSH 원격 세션을 사용하여 실행되는 셸 명령. | 실행된 셸 명령의 반환 값은 16MB로 제한됩니다(잘려진 후행 공백 포함); 데이터베이스 제한도 적용됩니다. libssh2 라이브러리는 실행 가능한 스크립트를 \~32kB로 자를 수 있습니다. 예제: date +%s systemctl status mysql-server ps auxww | grep httpd | wc -l |