SSH 점검

Zabbix v7.4번역일: 2026-09-09원본 보기

개요

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 +%s
systemctl status mysql-server
`ps auxww