### Summary

After upgrade from "ansible-base(2.10.8)" to "ansible-core(2.11.0)" Ansible is ignoring "~/.ssh/config" configuration file.

### Issue Type

Bug Report

### Component Name

ansible-core

### Ansible Version

```console
ansible [core 2.11.0] 
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.9/site-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/sbin/ansible
  python version = 3.9.4 (default, Apr 20 2021, 15:51:38) [GCC 10.2.0]
  jinja version = 2.11.3
  libyaml = True
```


### Configuration

```console
Nothing
```


### OS / Environment

Arch Linux

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
Creates an example entry in "~/.ssh/config"
```
Host 192.168.0.1
      Port 2222
```
Run the following ad-hoc command
```
ansible all -i 192.168.0.1, -m setup
```
The output follows
```
192.168.0.1 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: ssh: connect to host 192.168.0.1 port 22: Connection refused",
"unreachable": true
}
```
As you can notice the output shows "port 22" and not "port 2222".

### Expected Results

Is expected the ansible try to connect to host using the parameters configured at ".ssh/config" file.

### Actual Results

```console
ansible [core 2.11.0] 
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/USER/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.9/site-packages/ansible
  ansible collection location = /home/USER/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.9.4 (default, Apr 20 2021, 15:51:38) [GCC 10.2.0]
  jinja version = 2.11.3
  libyaml = True
Using /etc/ansible/ansible.cfg as config file
setting up inventory plugins
Parsed 192.168.0.1, inventory source with host_list plugin
Loading callback plugin minimal of type stdout, v2.0 from /usr/lib/python3.9/site-packages/ansible/plugins/callback/minimal.py
Attempting to use 'default' callback.
Skipping callback 'default', as we already have a stdout callback.
Attempting to use 'junit' callback.
Attempting to use 'minimal' callback.
Skipping callback 'minimal', as we already have a stdout callback.
Attempting to use 'oneline' callback.
Skipping callback 'oneline', as we already have a stdout callback.
Attempting to use 'tree' callback.
META: ran handlers
<192.168.0.1> ESTABLISH SSH CONNECTION FOR USER: None
<192.168.0.1> SSH: ansible.cfg set ssh_args: (-C)(-o)(ControlMaster=auto)(-o)(ControlPersist=60s)
<192.168.0.1> SSH: ANSIBLE_HOST_KEY_CHECKING/host_key_checking disabled: (-o)(StrictHostKeyChecking=no)
<192.168.0.1> SSH: ANSIBLE_REMOTE_PORT/remote_port/ansible_port set: (-o)(Port=22)
<192.168.0.1> SSH: ansible_password/ansible_ssh_password not set: (-o)(KbdInteractiveAuthentication=no)(-o)(PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey)(-o)(PasswordAuthentication=no)
<192.168.0.1> SSH: ANSIBLE_TIMEOUT/timeout set: (-o)(ConnectTimeout=10)
<192.168.0.1> SSH: Set ssh_common_args: ()
<192.168.0.1> SSH: Set ssh_extra_args: ()
<192.168.0.1> SSH: found only ControlPersist; added ControlPath: (-o)(ControlPath=/home/USER/.ansible/cp/144d72725f)
<192.168.0.1> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/USER/.ansible/cp/144d72725f 192.168.0.1 '/bin/sh -c '"'"'echo ~ && sleep 0'"'"''
<192.168.0.1> (255, b'', b'OpenSSH_8.6p1, OpenSSL 1.1.1k  25 Mar 2021\r\ndebug1: Reading configuration data /home/USER/.ssh/config\r\ndebug1: /home/USER/.ssh/config line 8: Applying options for 192.168.0.1\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug2: resolve_canonicalize: hostname 192.168.0.1 is address\r\ndebug3: expanded UserKnownHostsFile \'~/.ssh/known_hosts\' -> \'/home/USER/.ssh/known_hosts\'\r\ndebug3: expanded UserKnownHostsFile \'~/.ssh/known_hosts2\' -> \'/home/USER/.ssh/known_hosts2\'\r\ndebug1: auto-mux: Trying existing master\r\ndebug1: Control socket "/home/USER/.ansible/cp/144d72725f" does not exist\r\ndebug3: ssh_connect_direct: entering\r\ndebug1: Connecting to 192.168.0.1 [192.168.0.1] port 22.\r\ndebug3: set_sock_tos: set socket 3 IP_TOS 0x48\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug1: connect to address 192.168.0.1 port 22: Connection refused\r\nssh: connect to host 192.168.0.1 port 22: Connection refused\r\n')
<192.168.0.1> ssh_retry: attempt: 1, ssh return code is 255. cmd ([b'ssh', b'-vvv', b'-C', b'-o', b'ControlMaster=auto', b'-o', b'ControlPersist=60s', b'-o', b'StrictHostKeyChecking=no', b'-o', b'Port=22', b'-o', b'KbdInteractiveAuthentication=no', b'-o', b'PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey', b'-o', b'PasswordAuthentication=no', b'-o', b'ConnectTimeout=10', b'-o', b'ControlPath=/home/USER/.ansible/cp/144d72725f', b'192.168.0.1', b"/bin/sh -c 'echo ~ && sleep 0'"]...), pausing for 0 seconds
<192.168.0.1> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/USER/.ansible/cp/144d72725f 192.168.0.1 '/bin/sh -c '"'"'echo ~ && sleep 0'"'"''
<192.168.0.1> (255, b'', b'OpenSSH_8.6p1, OpenSSL 1.1.1k  25 Mar 2021\r\ndebug1: Reading configuration data /home/USER/.ssh/config\r\ndebug1: /home/USER/.ssh/config line 8: Applying options for 192.168.0.1\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug2: resolve_canonicalize: hostname 192.168.0.1 is address\r\ndebug3: expanded UserKnownHostsFile \'~/.ssh/known_hosts\' -> \'/home/USER/.ssh/known_hosts\'\r\ndebug3: expanded UserKnownHostsFile \'~/.ssh/known_hosts2\' -> \'/home/USER/.ssh/known_hosts2\'\r\ndebug1: auto-mux: Trying existing master\r\ndebug1: Control socket "/home/USER/.ansible/cp/144d72725f" does not exist\r\ndebug3: ssh_connect_direct: entering\r\ndebug1: Connecting to 192.168.0.1 [192.168.0.1] port 22.\r\ndebug3: set_sock_tos: set socket 3 IP_TOS 0x48\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug1: connect to address 192.168.0.1 port 22: Connection refused\r\nssh: connect to host 192.168.0.1 port 22: Connection refused\r\n')
<192.168.0.1> ssh_retry: attempt: 2, ssh return code is 255. cmd ([b'ssh', b'-vvv', b'-C', b'-o', b'ControlMaster=auto', b'-o', b'ControlPersist=60s', b'-o', b'StrictHostKeyChecking=no', b'-o', b'Port=22', b'-o', b'KbdInteractiveAuthentication=no', b'-o', b'PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey', b'-o', b'PasswordAuthentication=no', b'-o', b'ConnectTimeout=10', b'-o', b'ControlPath=/home/USER/.ansible/cp/144d72725f', b'192.168.0.1', b"/bin/sh -c 'echo ~ && sleep 0'"]...), pausing for 1 seconds
<192.168.0.1> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/USER/.ansible/cp/144d72725f 192.168.0.1 '/bin/sh -c '"'"'echo ~ && sleep 0'"'"''
<192.168.0.1> (255, b'', b'OpenSSH_8.6p1, OpenSSL 1.1.1k  25 Mar 2021\r\ndebug1: Reading configuration data /home/USER/.ssh/config\r\ndebug1: /home/USER/.ssh/config line 8: Applying options for 192.168.0.1\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug2: resolve_canonicalize: hostname 192.168.0.1 is address\r\ndebug3: expanded UserKnownHostsFile \'~/.ssh/known_hosts\' -> \'/home/USER/.ssh/known_hosts\'\r\ndebug3: expanded UserKnownHostsFile \'~/.ssh/known_hosts2\' -> \'/home/USER/.ssh/known_hosts2\'\r\ndebug1: auto-mux: Trying existing master\r\ndebug1: Control socket "/home/USER/.ansible/cp/144d72725f" does not exist\r\ndebug3: ssh_connect_direct: entering\r\ndebug1: Connecting to 192.168.0.1 [192.168.0.1] port 22.\r\ndebug3: set_sock_tos: set socket 3 IP_TOS 0x48\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug1: connect to address 192.168.0.1 port 22: Connection refused\r\nssh: connect to host 192.168.0.1 port 22: Connection refused\r\n')
<192.168.0.1> ssh_retry: attempt: 3, ssh return code is 255. cmd ([b'ssh', b'-vvv', b'-C', b'-o', b'ControlMaster=auto', b'-o', b'ControlPersist=60s', b'-o', b'StrictHostKeyChecking=no', b'-o', b'Port=22', b'-o', b'KbdInteractiveAuthentication=no', b'-o', b'PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey', b'-o', b'PasswordAuthentication=no', b'-o', b'ConnectTimeout=10', b'-o', b'ControlPath=/home/USER/.ansible/cp/144d72725f', b'192.168.0.1', b"/bin/sh -c 'echo ~ && sleep 0'"]...), pausing for 3 seconds
<192.168.0.1> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/USER/.ansible/cp/144d72725f 192.168.0.1 '/bin/sh -c '"'"'echo ~ && sleep 0'"'"''
<192.168.0.1> (255, b'', b'OpenSSH_8.6p1, OpenSSL 1.1.1k  25 Mar 2021\r\ndebug1: Reading configuration data /home/USER/.ssh/config\r\ndebug1: /home/USER/.ssh/config line 8: Applying options for 192.168.0.1\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug2: resolve_canonicalize: hostname 192.168.0.1 is address\r\ndebug3: expanded UserKnownHostsFile \'~/.ssh/known_hosts\' -> \'/home/USER/.ssh/known_hosts\'\r\ndebug3: expanded UserKnownHostsFile \'~/.ssh/known_hosts2\' -> \'/home/USER/.ssh/known_hosts2\'\r\ndebug1: auto-mux: Trying existing master\r\ndebug1: Control socket "/home/USER/.ansible/cp/144d72725f" does not exist\r\ndebug3: ssh_connect_direct: entering\r\ndebug1: Connecting to 192.168.0.1 [192.168.0.1] port 22.\r\ndebug3: set_sock_tos: set socket 3 IP_TOS 0x48\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug1: connect to address 192.168.0.1 port 22: Connection refused\r\nssh: connect to host 192.168.0.1 port 22: Connection refused\r\n')
192.168.0.1 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: OpenSSH_8.6p1, OpenSSL 1.1.1k  25 Mar 2021\r\ndebug1: Reading configuration data /home/USER/.ssh/config\r\ndebug1: /home/USER/.ssh/config line 8: Applying options for 192.168.0.1\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug2: resolve_canonicalize: hostname 192.168.0.1 is address\r\ndebug3: expanded UserKnownHostsFile '~/.ssh/known_hosts' -> '/home/USER/.ssh/known_hosts'\r\ndebug3: expanded UserKnownHostsFile '~/.ssh/known_hosts2' -> '/home/USER/.ssh/known_hosts2'\r\ndebug1: auto-mux: Trying existing master\r\ndebug1: Control socket \"/home/USER/.ansible/cp/144d72725f\" does not exist\r\ndebug3: ssh_connect_direct: entering\r\ndebug1: Connecting to 192.168.0.1 [192.168.0.1] port 22.\r\ndebug3: set_sock_tos: set socket 3 IP_TOS 0x48\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug1: connect to address 192.168.0.1 port 22: Connection refused\r\nssh: connect to host 192.168.0.1 port 22: Connection refused",
    "unreachable": true
}
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
'''
        Takes a command array and scans it for ControlPersist and ControlPath
        settings and returns two booleans indicating whether either was found.
        This could be smarter, e.g. returning false if ControlPersist is 'no',
        but for now we do it simple way.
        '''
        controlpersist = False
        controlpath = False
        for b_arg in (a.lower() for a in b_command):
            if b'controlpersist' in b_arg:
                controlpersist = True
            elif b'controlpath' in b_arg:
                controlpath = True
        return controlpersist, controlpath
    def _add_args(self, b_command, b_args, explanation):
        """
        Adds arguments to the ssh command and displays a caller-supplied explanation of why.
        :arg b_command: A list containing the command to add the new arguments to.
            This list will be modified by this method.
        :arg b_args: An iterable of new arguments to add.  This iterable is used
            more than once so it must be persistent (ie: a list is okay but a
            StringIO would not)
        :arg explanation: A text string containing explaining why the arguments
            were added.  It will be displayed with a high enough verbosity.
        .. note:: This function does its work via side-effect.  The b_command list has the new arguments appended.
        """
        display.vvvvv(u'SSH: %s: (%s)' % (explanation, ')('.join(to_text(a) for a in b_args)), host=self._play_context.remote_addr)
        b_command += b_args
    def _build_command(self, binary, subsystem, *other_args):