Emacs has Tramp, which gives you (a), and one of the emacs terminal modes can do (b) if you write the requisite script (which I estimate at two lines) and bind it to a key.
You'll find these documented right next to C-x M-c M-butterfly. ;)
Though in practice I find that (a) once you know emacs it's usually just as easy to shell into the remote machine and run emacs there, so I myself have yet to really get the hang of Tramp and (b) the vanilla Terminal app plus a properly set-up .sshconfig goes a long way.
Tramp in Emacs is great. For restricted datacenter server farms, it's a godsend to use Tramp to get to any log files or config files on production machines.
What I usually did was to run Emacs on my dev machine, run multi-hop Tramp to get to any of the production servers via a gateway jumpbox. Tramp is able to do multiple ssh hops to get to the target machine, all behind the scene.
Bookmarking the remote files makes it really easy to get back to it.
You'll find these documented right next to C-x M-c M-butterfly. ;)
Though in practice I find that (a) once you know emacs it's usually just as easy to shell into the remote machine and run emacs there, so I myself have yet to really get the hang of Tramp and (b) the vanilla Terminal app plus a properly set-up .sshconfig goes a long way.