SALT-KEY(1)

✨ SALT-KEY πŸ’…

okay bestie, gather round, because we're talking about salt-key β€” the manual page for it, specifically, from the Salt project. this is the little tool that does the whole "who's allowed in the group chat" dance for your Salt server keys. it's giving bouncer-at-the-club energy and honestly? iconic.


🌸 SYNOPSIS

salt-key [ options ]

that's it. that's the whole vibe. options go in, keys get managed. πŸŽ€


πŸ’– DESCRIPTION

salt-key does the simple management of Salt server public keys used for authentication. basically it's the key-handling bestie of your Salt setup. πŸ”‘

so here's the tea: on the initial connection, a Salt minion sends its public key over to the Salt master. that key must be accepted using the salt-key command on the Salt master. no accept, no talking. periodt.

Salt minion keys can be in one of these states, and yes you need to know all of them:

  • unaccepted β€” the key is waiting to be accepted. it's sitting there like "hello?? notice me πŸ₯Ί"
  • accepted β€” the key was accepted and the minion can communicate with the Salt master. slay, you're in the group chat. πŸ’–
  • rejected β€” the key was rejected using the salt-key command. in this state the minion does not receive any communication from the Salt master. blocked. πŸ’€
  • denied β€” the key was rejected automatically by the Salt master. this happens when a minion has a duplicate ID, or when a minion was rebuilt or had new keys generated and the previous key was not deleted from the Salt master. in this state the minion does not receive any communication from the Salt master. auto-blocked, no cap. 🚫
and to change the state of a minion key? use -d to delete the key and then accept or reject the key. you can't just flip a switch, bestie, you gotta delete first. 😭

✨ OPTIONS ✨

  • --version β€” print the version of Salt that is running. simple. cute. πŸŽ€
  • --versions-report β€” show the program's dependencies and version number, then dip (exit). πŸ¦‹
  • -h, --help β€” show the help message and exit. the classic. πŸ’…
  • -c CONFIG_DIR, --config-dir=CONFIG_dir β€” the location of the Salt configuration directory. this directory contains the configuration files for Salt master and minions. the default location on most systems is /etc/salt. πŸ“
  • -u USER, --user=USER β€” specify the user to run salt-key as. πŸ‘‘
  • --hard-crash β€” raise any original exception rather than exiting gracefully. default is False. so like, it's gonna be loud about it. πŸ™ˆ
  • -q, --quiet β€” suppress output. shhh. 🀫
  • -y, --yes β€” answer 'Yes' to all questions presented, defaults to False. consent pre-given, let's gooo. βœ…
  • --rotate-aes-key=ROTATE_AES_KEY β€” setting this to False prevents the master from refreshing the key session when keys are deleted or rejected. this lowers the security of the key deletion/rejection operation. default is True. so like, please leave it alone unless you know what you're doing. πŸ”

πŸ“ Logging Options

these logging options override any settings defined in the configuration files. yes, they beat the config files. main character energy. ✨

  • --log-file=LOG_FILE β€” log file path. default: /var/log/salt/minion.
  • --log-file-level=LOG_LEVEL_LOGFILE β€” logfile logging log level. one of all, garbage, trace, debug, info, warning, error, quiet. default: warning.

🌈 Output Options

  • --out β€” pass in an alternative outputter to display the return of data. this outputter can be any of the available outputters:
highstate, json, key, overstatestage, pprint, raw, txt, yaml,
and many others.

some outputters are formatted only for data returned from specific functions. if an outputter is used that does not support the data passed into it, then Salt will fall back on the pprint outputter and display the return data using the Python pprint standard library module. so worst case you get pprint, no biggie. πŸ’œ

  • --out-indent OUTPUT_INDENT, --output-indent OUTPUT_INDENT β€” print the output indented by the provided value in spaces. negative values disable indentation. only applicable in outputters that support indentation. πŸͺ†
  • --out-file=OUTPUT_FILE, --output-file=OUTPUT_FILE β€” write the output to the specified file. πŸ“„
  • --out-file-append, --output-file-append β€” append the output to the specified file. (append! not overwrite! different vibe!) ✍️
  • --no-color β€” disable all colored output. 🚫🌈
  • --force-color β€” force colored output. 🌈✨
NOTE: when using colored output the color codes are as follows: - green denotes success - red denotes failure - blue denotes changes and success - yellow denotes an expected future change in configuration
  • --state-output=STATE_OUTPUT, --state_output=STATE_OUTPUT β€” override the configured state_output value for minion output. one of 'full', 'terse', 'mixed', 'changes' or 'filter'. default: 'none'.
  • --state-verbose=STATE_VERBOSE, --state_verbose=STATE_VERBOSE β€” override the configured state_verbose value for minion output. set to True or False. default: none.

🎯 Actions

this is where the real work happens, bestie. buckle up. πŸ’…

  • -l ARG, --list=ARG β€” list the public keys. the args pre, un, and unaccepted will list unaccepted/unsigned keys. acc or accepted will list accepted/signed keys. rej or rejected will list rejected keys. finally, all will list all keys. pick your fighter. πŸ“‹
  • -L, --list-all β€” list all public keys. (Deprecated: use --list all) β€” it's giving legacy, use the other one. πŸ‘΅
  • -a ACCEPT, --accept=ACCEPT β€” accept the specified public key (use --include-all to match rejected keys in addition to pending keys). globs are supported. 🫢
  • -A, --accept-all β€” accepts all pending keys. all of them. every single one. πŸŽ‰
  • -r REJECT, --reject=REJECT β€” reject the specified public key (use --include-all to match accepted keys in addition to pending keys). globs are supported. ❌
  • -R, --reject-all β€” rejects all pending keys. 😀
  • --include-all β€” include non-pending keys when accepting/rejecting. πŸ”
  • -p PRINT, --print=PRINT β€” print the specified public key. πŸ–¨οΈ
  • -P, --print-all β€” print all public keys. πŸ–¨οΈπŸ–¨οΈ
  • -d DELETE, --delete=DELETE β€” delete the specified key. globs are supported. πŸ—‘οΈ
  • -D, --delete-all β€” delete all keys. (be careful bestie, this one goes hard) πŸ’€
  • -f FINGER, --finger=FINGER β€” print the specified key's fingerprint. πŸ«†
  • -F, --finger-all β€” print all keys' fingerprints. πŸ«†πŸ«†

πŸ”‘ Key Generation Options

  • --gen-keys=GEN_KEYS β€” set a name to generate a keypair for use with salt. 🌱
  • --gen-keys-dir=GEN_KEYS_DIR β€” set the directory to save the generated keypair. only works with the 'gen_keys_dir' option; default is the current directory. πŸ“‚
  • --keysize=KEYSIZE β€” set the keysize for the generated key, only works with the '--gen-keys' option. the key size must be 2048 or higher, otherwise it will be rounded up to 2048. the default is 2048. no tiny keys allowed. πŸ“
  • --gen-signature β€” create a signature file of the master's public-key named master_pubkey_signature. the signature can be sent to a minion in the master's auth-reply and enables the minion to verify the master's public-key cryptographically. this requires a new signing-key-pair which can be auto-created with the --auto-create parameter. βœοΈπŸ”
  • --priv=PRIV β€” the private-key file to create a signature with. πŸ”’
  • --signature-path=SIGNATURE_PATH β€” the path where the signature file should be written. πŸ“
  • --pub=PUB β€” the public-key file to create a signature for. πŸ”“
  • --auto-create β€” auto-create a signing key-pair if it does not yet exist. the lazy-girl way and honestly? valid. ✨

πŸ‘€ SEE ALSO

salt(7) salt-master(1) salt-minion(1)

the whole friend group, go read them too. 🫢


πŸ–ŠοΈ AUTHOR

Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file. legends, all of them. πŸ‘‘


2025


and that's a wrap, bestie!! this page came from Salt version 3007.8 and was generated on September 18, 2025 at 06:58:52 UTC. go accept some keys, reject some weirdos, and keep your master secure. mwah. πŸ’‹πŸŽ€βœ¨

πŸ“¦ where this page comes from