Listing 1: sshd-keygen-Service wird automatisch aktiviert @.service ### Die systemd Unit-Datei kümmert sich darum Host-Schlüssel für den OpenSSH-Services zu erzeugen. [Unit] Description=OpenSSH %i Server Key Generation ConditionFileNotEmpty=|!/etc/ssh/ ssh_host_%i_key [Service] Type=oneshot EnvironmentFile=-/etc/sysconfig/sshd ExecStart=/usr/libexec/openssh/sshd-keygen %i [Install] WantedBy=sshd-keygen.target Listing 2: Shell-Skript "/usr/libexec/openssh/sshd-keygen" ### Shell-Skript zum Erzeugen von SSH HostSchlüsseln. #!/usr/bin/bash # Host-Schlüssel für den OpenSSH-Server erzeugen. KEYTYPE=$1 case $KEYTYPE in "dsa") ;& # disabled in FIPS "ed25519") FIPS=/proc/sys/crypto/fips_enabled if [[ -r "$FIPS" && $(cat $FIPS) == "1" ]]; then exit 0 fi ;; "rsa") ;; # always ok "ecdsa") ;; *) # wrong argument exit 12 ;; esac KEY=/etc/ssh/ssh_host_${KEYTYPE}_key KEYGEN=/usr/bin/ssh-keygen if [[ ! -x $KEYGEN ]]; then exit 13 fi # Alte Schlüssel entfernen rm -f $KEY{,.pub} # Neue Schlüssel erzeugen if ! $KEYGEN -q -t $KEYTYPE -f $KEY -C '' -N '' >&/dev/null; then exit 1 fi # Berechtigungen einstellen /usr/bin/chmod 600 $KEY /usr/bin/chmod 644 $KEY.pub if [[ -x /usr/sbin/restorecon ]]; then /usr/sbin/restorecon $KEY{,.pub} fi exit 0 Listing 3: Anlegen unterschiedlicher Host-Keys ### Die systemd target-Datei bestimmt, welche Host-Schlüssel im Detail erzeugt werden sollen. [Unit] Wants=sshd-keygen@rsa.service Wants=sshd-keygen@ecdsa.service Wants=sshd-keygen@ed25519.service