##### SUMMARY
<!--- Explain the problem briefly below, add suggestions to wording or structure -->
The [main configuration documentation](https://docs.ansible.com/ansible/latest/reference_appendices/config.html#ansible-pipelining) says that pipelining is enabled in the `ssh_connection` or `connection` section.

The [ssh connection plugin](https://docs.ansible.com/ansible/latest/plugins/connection/ssh.html#parameter-pipelining) configuration says pipelining should  be enabled in the `defaults` section.

#31125 (and the associated commit) seems to imply that the `ssh_connection` section is legacy, but the comments (https://github.com/ansible/ansible/issues/31125#issuecomment-334071699) seem to say otherwise.

The actual sections (as demonstrated in the configuration section below) that works are `ssh_connection` and `connection`.


##### ISSUE TYPE
- Documentation Report

##### COMPONENT NAME
ssh

##### ANSIBLE VERSION

```paste below
ansible 2.9.9
  config file = /c/xxx/ansible/ansible.cfg
  configured module search path = ['/c/Users/bendem/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /c/Users/bendem/.local/share/virtualenvs/ansible-oaopcvR0/lib/python3.8/site-packages/ansible
  executable location = /c/Users/bendem/.local/share/virtualenvs/ansible-oaopcvR0/bin/ansible
  python version = 3.8.3 (default, May 18 2020, 08:39:23) [GCC 9.3.0]
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
With `[defaults]\npipelining = true`

```
ALLOW_WORLD_READABLE_TMPFILES(/c/xxx/ansible/ansible.cfg) = False
ANSIBLE_SSH_EXECUTABLE(/c/xxx/ansible/ansible.cfg) = /usr/bin/ssh
ANSIBLE_SSH_RETRIES(/c/xxx/ansible/ansible.cfg) = 1
DEFAULT_HOST_LIST(/c/xxx/ansible/ansible.cfg) = ['/c/xxx/ansible/inventory/inventory.ini']
DEFAULT_ROLES_PATH(/c/xxx/ansible/ansible.cfg) = ['/c/xxx/ansible/vendors/roles', '/c/xxx/ansible/roles']
DEFAULT_VAULT_ID_MATCH(/c/xxx/ansible/ansible.cfg) = true
DIFF_ALWAYS(/c/xxx/ansible/ansible.cfg) = True
INTERPRETER_PYTHON(/c/xxx/ansible/ansible.cfg) = /usr/bin/python3
INVENTORY_UNPARSED_IS_FAILED(/c/xxx/ansible/ansible.cfg) = True
```

With `[ssh_connection]\npipelining = true`

```paste below
ALLOW_WORLD_READABLE_TMPFILES(/c/xxx/ansible/ansible.cfg) = False
ANSIBLE_PIPELINING(/c/xxx/ansible/ansible.cfg) = True
ANSIBLE_SSH_EXECUTABLE(/c/xxx/ansible/ansible.cfg) = /usr/bin/ssh
ANSIBLE_SSH_RETRIES(/c/xxx/ansible/ansible.cfg) = 1
DEFAULT_HOST_LIST(/c/xxx/ansible/ansible.cfg) = ['/c/xxx/ansible/inventory/inventory.ini']
DEFAULT_ROLES_PATH(/c/xxx/ansible/ansible.cfg) = ['/c/xxx/ansible/vendors/roles', '/c/xxx/ansible/roles']
DEFAULT_VAULT_ID_MATCH(/c/xxx/ansible/ansible.cfg) = true
DIFF_ALWAYS(/c/xxx/ansible/ansible.cfg) = True
INTERPRETER_PYTHON(/c/xxx/ansible/ansible.cfg) = /usr/bin/python3
INVENTORY_UNPARSED_IS_FAILED(/c/xxx/ansible/ansible.cfg) = True
```

With `[connection]\npipelining = true`

```paste below
ALLOW_WORLD_READABLE_TMPFILES(/c/xxx/ansible/ansible.cfg) = False
ANSIBLE_PIPELINING(/c/xxx/ansible/ansible.cfg) = True
ANSIBLE_SSH_EXECUTABLE(/c/xxx/ansible/ansible.cfg) = /usr/bin/ssh
ANSIBLE_SSH_RETRIES(/c/xxx/ansible/ansible.cfg) = 1
DEFAULT_HOST_LIST(/c/xxx/ansible/ansible.cfg) = ['/c/xxx/ansible/inventory/inventory.ini']
DEFAULT_ROLES_PATH(/c/xxx/ansible/ansible.cfg) = ['/c/xxx/ansible/vendors/roles', '/c/xxx/ansible/roles']
DEFAULT_VAULT_ID_MATCH(/c/xxx/ansible/ansible.cfg) = true
DIFF_ALWAYS(/c/xxx/ansible/ansible.cfg) = True
INTERPRETER_PYTHON(/c/xxx/ansible/ansible.cfg) = /usr/bin/python3
INVENTORY_UNPARSED_IS_FAILED(/c/xxx/ansible/ansible.cfg) = True
```

##### OS / ENVIRONMENT
Windows 10, msys2 python3, not that it matters.

##### ADDITIONAL INFORMATION
<!--- Describe how this improves the documentation, e.g. before/after situation or screenshots -->

<!--- HINT: You can paste gist.github.com links for larger files -->

'''
        Create and return a temporary path on a remote box.
        '''
        
        
        
        if getattr(self._connection, '_remote_is_local', False):
            tmpdir = C.DEFAULT_LOCAL_TMP
        else:
            
            
            tmpdir = self._remote_expand_user(self.get_shell_option('remote_tmp', default='~/.ansible/tmp'), sudoable=False)
        become_unprivileged = self._is_become_unprivileged()
        basefile = self._connection._shell._generate_temp_dir_name()
        cmd = self._connection._shell.mkdtemp(basefile=basefile, system=become_unprivileged, tmpdir=tmpdir)
        result = self._low_level_execute_command(cmd, sudoable=False)
        
        if result['rc'] != 0:
            if result['rc'] == 5:
                output = 'Authentication failure.'
            elif result['rc'] == 255 and self._connection.transport in ('ssh',):
                if self._play_context.verbosity > 3:
                    output = u'SSH encountered an unknown error. The output was:\n%s%s' % (result['stdout'], result['stderr'])
                else:
                    output = (u'SSH encountered an unknown error during the connection. '
                              'We recommend you re-run the command using -vvvv, which will enable SSH debugging output to help diagnose the issue')