diff --git a/plugins/ssh-keys/functions b/plugins/ssh-keys/functions index f18200830..8e4560fa7 100755 --- a/plugins/ssh-keys/functions +++ b/plugins/ssh-keys/functions @@ -14,9 +14,14 @@ verify_ssh_key_file() { declare desc="Test that public key is valid" [[ -s ${DOKKU_ROOT}/.ssh/authorized_keys ]] || dokku_log_fail "No public keys found." local key line=0 + local TMP_KEY_FILE + TMP_KEY_FILE=$(mktemp "/tmp/${FUNCNAME[0]}.XXXX") + trap 'rm -rf "$TMP_KEY_FILE" >/dev/null' RETURN INT TERM EXIT + while read -r key; do line=$((line + 1)) - ssh-keygen -l -f /dev/stdin <<<"$key" &>/dev/null || dokku_log_fail "${DOKKU_ROOT}/.ssh/authorized_keys line $line failed ssh-keygen check." + echo "$key" >"$TMP_KEY_FILE" + ssh-keygen -lf "$TMP_KEY_FILE" &>/dev/null || dokku_log_fail "${DOKKU_ROOT}/.ssh/authorized_keys line $line failed ssh-keygen check." done <"${DOKKU_ROOT}/.ssh/authorized_keys" }