|
Dusty Mabe |
08d842 |
#!/usr/bin/bash
|
|
Dusty Mabe |
08d842 |
set -eu -o pipefail
|
|
Dusty Mabe |
08d842 |
# Detect existing non-conforming host keys and perform the permissions migration
|
|
Dusty Mabe |
08d842 |
# https://fedoraproject.org/wiki/Changes/SSHKeySignSuidBit
|
|
Dusty Mabe |
08d842 |
#
|
|
Dusty Mabe |
08d842 |
# Example output looks like:
|
|
Dusty Mabe |
08d842 |
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
Dusty Mabe |
08d842 |
# @ WARNING: UNPROTECTED PRIVATE KEY FILE! @
|
|
Dusty Mabe |
08d842 |
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
Dusty Mabe |
08d842 |
# Permissions 0640 for '/etc/ssh/ssh_host_rsa_key' are too open.
|
|
Dusty Mabe |
08d842 |
# It is required that your private key files are NOT accessible by others.
|
|
Dusty Mabe |
08d842 |
# This private key will be ignored.
|
|
Dusty Mabe |
08d842 |
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
Dusty Mabe |
08d842 |
# @ WARNING: UNPROTECTED PRIVATE KEY FILE! @
|
|
Dusty Mabe |
08d842 |
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
Dusty Mabe |
08d842 |
# Permissions 0640 for '/etc/ssh/ssh_host_ecdsa_key' are too open.
|
|
Dusty Mabe |
08d842 |
# It is required that your private key files are NOT accessible by others.
|
|
Dusty Mabe |
08d842 |
# This private key will be ignored.
|
|
Dusty Mabe |
08d842 |
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
Dusty Mabe |
08d842 |
# @ WARNING: UNPROTECTED PRIVATE KEY FILE! @
|
|
Dusty Mabe |
08d842 |
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
Dusty Mabe |
08d842 |
# Permissions 0640 for '/etc/ssh/ssh_host_ed25519_key' are too open.
|
|
Dusty Mabe |
08d842 |
# It is required that your private key files are NOT accessible by others.
|
|
Dusty Mabe |
08d842 |
# This private key will be ignored.
|
|
Dusty Mabe |
08d842 |
# sshd: no hostkeys available -- exiting.
|
|
Dusty Mabe |
08d842 |
#
|
|
Dusty Mabe |
08d842 |
output="$(sshd -T 2>&1 || true)" # expected to fail
|
|
Dusty Mabe |
21fd6b |
while read line; do
|
|
Dusty Mabe |
21fd6b |
if [[ $line =~ ^Permissions\ [0-9]+\ for\ \'(.*)\'\ are\ too\ open. ]]; then
|
|
Dusty Mabe |
21fd6b |
keyfile=${BASH_REMATCH[1]}
|
|
Dusty Mabe |
21fd6b |
echo $line
|
|
Dusty Mabe |
21fd6b |
echo -e "\t-> changing permissions on $keyfile"
|
|
Dusty Mabe |
21fd6b |
chmod --verbose g-r $keyfile
|
|
Dusty Mabe |
21fd6b |
chown --verbose root:root $keyfile
|
|
Dusty Mabe |
21fd6b |
fi
|
|
Dusty Mabe |
21fd6b |
done <<< "$output"
|