Ssh struggles with high connection counts and has performance issues that crop up and require the forward to be torn down and rebuilt occasionally when I have high connections over time.
Performance, while it's working, I've found to be generally good. But there are clear ceilings to the method that you hit when trying to use it heavily.
I never saw any issues when I used it to forward ports for myself. But the moment I tried to use it for production for a small service it falls on it's face regularly unless I baby it.
You can always SSH from Machine B to Machine A and expose any local Machine B port to the internet as a port on Machine A. The feature is called GatewayPorts and is a standard SSH feature (at least in OpenSSH). It does not require installing anything other than SSH on Machine A (or even Machine B, unless you want a script to re-establish the tunnel upon disconnect).
Anywhere, Anyplace, Anytime -> public IP running that thing and pointing to -> that thing running behind your dynamic and NATed IP -> golden/Bob's your uncle/gotcha covered/whatever