On the (few) penetration tests that I've done so far, I've typically created a reverse shell with Netcat to run commands on the target machine. Now, it looks like a lot of people like to use an SSH client to do this. I've been researching for more information and found that if anything, it looks like Netcat would be better to use. This is due to a lot of networks either not having SSH installed for security reasons, or firewalls preventing SSH communication.
So, what I'm wondering is when is it appropriate to use a reverse shell with Netcat vs an SSH client? What are the pro's and con's of each? Thank you.