I think this would be better defined as something like:

``` python
def remote_tunnel(remote_port, local_port=None, remote_host=None, local_host='localhost'):
```

Specifically:

* Somewhat more readable/clean name
* More explicit arguments; having 'polymorphic' arguments that can take various values/meanings is fine (we use this approach frequently) but this feels like it goes a little too far, especially with 'lport' taking three sorts of strings, two of which don't even overlap.
* I would change from your current behavior such that the default `remote_host` is be the host part of `env.host_string` (technically `env.host` but referring to `env.host_string` is always safer).
    * Speaking of: I'm not sure why you'd default the remote host to localhost? Maybe I'm missing a use case -- let me know.