Bastion hosts are the wrong approach, as are VPNs. They might have had some merit in the days of handcrafted servers, where "hardening" was something you could do to a single machine. But nowadays, especially on AWS, there's no point in a configuration that isn't automatically reproducible - in which case, why not harden all your machines? Then you avoid having a single point of failure. If and when a single SSH key…
That way you can rotate them easily if the private keys become compromised.
I recently built a system using this technique and synced the keys to S3, very effective.