Configuring SSH key-based monitoring
For password based monitoring of devices via SSH, the zCommandUsername
and zCommandPassword
properties must be configured. To eliminate the
need for stored passwords, SSH keys can be generated and distributed
using the instructions on this page.
In the instructions below, we will assume that the monitoring account (zenmonitor) has already been created on the target device. If you use a different name for your SSH-based monitoring account, please substitute it below.
For the localhost collector
-
On the Control Center master, set the correct permissions on the distributed filesystem (DFS) ssh directory:
chmod 0700 $(df -h| grep volumes | awk '{print $NF}')/.ssh
-
Attach to the zencommand service container of the localhost collector:
serviced service attach localhost/zencommand
-
Switch to the zenoss user:
su - zenoss
-
Generate the SSH keys:
ssh-keygen -t rsa
Note
SSH key passphrases are supported. If your key makes use of a passphrase, be sure to populate the
zCommandPassword
property. Otherwise, leavezCommandPassword
blank. -
Copy the SSH keys to the monitoring target device:
ssh-copy-id zenmonitor@hostname
Note
This can also be accomplished by copying the contents of
/home/zenoss/.ssh/id_rsa.pub
from inside the zencommand container into the/home/zenmonitor/.ssh/authorized_keys
file on the target device. -
Verify that you can ssh from inside the zencommand container to the target device:
ssh zenmonitor@hostname
-
Exit the zenoss user, then exit the zencommand container:
exit exit
-
In the Resource Manager UI, update the zProperties for the target device, or for the device's parent device class if the user and key will be reused:
zPropertyName Value zCommandUsername zenmonitor zKeyPath /home/zenoss/.ssh/id_rsa zCommandPassword passphrase <or blank if none>
For remote collectors
To perform SSH key-based monitoring of devices from a non-localhost collector, simply copy the id_rsa private key from the Control Center master to the delegate host:
scp $(df -h | awk '/volumes/ {print $NF}')/.ssh/id_rsa user@delegatehost:$(df -h | awk '/volumes/ {print $NF}')/.ssh/id_rsa
Note
This step will need to be repeated for every delegate host where the zencommand service container might run. If the key is missing from a delegate host, any instance of the zencommand service that starts there will be unable to initiate key-authenticated SSH sessions.