##### 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 -->

if res['rc'] != 0:
                        raise AnsibleError('Failed to set file mode on remote temporary files (rc: {0}, err: {1})'.format(res['rc'], to_native(res['stderr'])))
                res = self._remote_chown(remote_paths, self.get_become_option('become_user'))
                if res['rc'] != 0 and remote_user in self._get_admin_users():
                    
                    raise AnsibleError('Failed to change ownership of the temporary files Ansible needs to create despite connecting as a privileged user. '
                                       'Unprivileged become user would be unable to read the file.')
                elif res['rc'] != 0:
                    if self.get_shell_option('world_readable_temp', C.ALLOW_WORLD_READABLE_TMPFILES):
                        
                        
                        display.warning('Using world-readable permissions for temporary files Ansible needs to create when becoming an unprivileged user. '
                                        'This may be insecure. For information on securing this, see '
                                        'https://docs.ansible.com/ansible/user_guide/become.html#risks-of-becoming-an-unprivileged-user')
                        res = self._remote_chmod(remote_paths, 'a+%s' % chmod_mode)
                        if res['rc'] != 0:
                            raise AnsibleError('Failed to set file mode on remote files (rc: {0}, err: {1})'.format(res['rc'], to_native(res['stderr'])))
                    else:
                        raise AnsibleError('Failed to set permissions on the temporary files Ansible needs to create when becoming an unprivileged user '
                                           '(rc: %s, err: %s}). For information on working around this, see '
                                           'https://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user'
                                           % (res['rc'], to_native(res['stderr'])))
        elif execute:
            
            
            res = self._remote_chmod(remote_paths, 'u+x')
            if res['rc'] != 0:
                raise AnsibleError('Failed to set execute bit on remote files (rc: {0}, err: {1})'.format(res['rc'], to_native(res['stderr'])))
        return remote_paths
    def _remote_chmod(self, paths, mode, sudoable=False):