Non-standard port with aliases
Create an alias that looks something like one of the examples below:

Drush 9 Example: ~/.drush/sites/my-site.yml

live:
  uri: example.com
  host: isp.net
  user: www-admin
  paths:
    drush-script: /path/to/drush
  ssh:
    options: '-p 2222 -o "AddressFamily inet"'
    tty: false


Drush 8 Example ~/.drush/aliases.drushrc.php

$aliases["my-site.live"] = array (
  'uri' =&gt; 'example.com',
  'remote-host' =&gt; 'isp.net',
  'remote-user' =&gt; 'www-admin',
  'ssh-options' =&gt; '-p 2234 -o "AddressFamily inet"',
  'path-aliases' =&gt; 
    array (
      '%drush-script' =&gt; '/path/to/drush',
    ),
);


Adjust 'ssh-options' as necessary for your configuration.

You may omit 'path-aliases' entirely if Drush is in your $PATH on the remote machine. Defining the Drush path is safer, though; the rules Bash follows for sourcing resource files for login shells vs. non-login shells et. al. is somewhat confusing.