Known Hosts File¶
Before an agent can connect to a VOLTTRON platform that agent must know the platform’s VIP address and public key (known as the server key). It can be tedious to manually keep track of server keys and match them with their corresponding addresses.
The purpose of the known-hosts file is to save a mapping of platform addresses to server keys. This way the user only has to specify a server key one time.
Saving a Server Key¶
Suppose a user wants to connect to a platform at 192.168.0.42:22916
, and the
platform’s public key is uhjbCUm3kT5QWj5Py9w0XZ7c1p6EP8pdo4Hq4dNEIiQ
.
To save this address-to-server-key association, the user can run:
volttron-ctl auth add-known-host --host 192.168.0.42:22916 --serverkey uhjbCUm3kT5QWj5Py9w0XZ7c1p6EP8pdo4Hq4dNEIiQ
Now agents on this system will automatically use the correct server key when
connecting to the platform at 192.168.0.42:22916
.
Server Key for Local Platforms¶
When a platform starts it automatically adds its public key to the
known-hosts file. Thus agents connecting to the local VOLTTRON platform
(on the same system and using the same $VOLTTRON_HOME
) will automatically
be able to retrieve the platform’s public key.
Know-Host-File Details¶
Note: the following details regarding the known-hosts file are subject to change. These notes are primarily for developers, but the may be helpful if troubleshooting an issue. The known-hosts file should not be edited directly.
File Location¶
The known-hosts-file is stored at $VOLTTRON_HOME/known_hosts
.
File Contents¶
Here are the contents of an example known-hosts file:
{
"@": "FSG7LHhy3v8tdNz3gK35G6-oxUcyln54pYRKu5fBJzU",
"127.0.0.1:22916": "FSG7LHhy3v8tdNz3gK35G6-oxUcyln54pYRKu5fBJzU",
"127.0.0.2:22916": "FSG7LHhy3v8tdNz3gK35G6-oxUcyln54pYRKu5fBJzU",
"127.0.0.1:12345": "FSG7LHhy3v8tdNz3gK35G6-oxUcyln54pYRKu5fBJzU",
"192.168.0.42:22916": "uhjbCUm3kT5QWj5Py9w0XZ7c1p6EP8pdo4Hq4dNEIiQ"
}
The first four entries are for the local platform. (They were automatically
added when the platform started.) The first entry with the @
key is for
IPC connections, and the entries with the 127.0.0.*
keys are for
local TCP connections. Note that a single VOLTTRON platform can bind to
multiple TCP addresses, and each address will be automatically added
to the known-hosts file. The last entry is for a remote VOLTTRON platform.
(It was added in the Saving a Server Key section.)