<!--- Verify first that your issue is not already reported on GitHub -->
it is not
<!--- Also test if the latest release and devel branch are affected too -->

<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
<!--- Explain the problem briefly below -->
I have a loop which tries to assign a user to remote_user in my playbook.  The first assignment works, subsequent ones do not and the first assignment is used in subsequent iterations of the loop
##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->
ssh connection plugin perhaps? or the calling of it

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
ansible 2.8.1
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/home/bi003do/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Apr  9 2019, 14:30:50) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]

```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below
DEFAULT_TIMEOUT(/etc/ansible/ansible.cfg) = 30
HOST_KEY_CHECKING(/etc/ansible/ansible.cfg) = False


```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
target OS is AWS Linux instances of various flavors


##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->
run the following playbook using inventory file with a single known linux host with user: ec2-user
```ini
[test]
xxx.xxx.xxx.xxx
```

<!--- Paste example playbooks or commands between quotes below -->
```yaml
---
- hosts: test
  gather_facts: false
  tasks:
  - name: try users
    remote_user: "{{ item }}"
    ping:
    ignore_unreachable: true
    failed_when: false
    with_items:
      - centos
      - ec2-user
      - root

```

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

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
I would expect this to loop 3 times trying to ping with the 3 users listed in with_items above

##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->
```
 ansible-playbook TryUsers.yml -i inventory -vvvv
First iteration

<xxx.xxx.xxx.xxx> ESTABLISH SSH CONNECTION FOR USER: centos
Second iteration
<xxx.xxx.xxx.xxx> ESTABLISH SSH CONNECTION FOR USER: centos
third iteration
<xxx.xxx.xxx.xxx> ESTABLISH SSH CONNECTION FOR USER: centos

```

<!--- Paste verbatim command output between quotes -->
```
bi003do@usbou-ansible TryUsers]$ ansible-playbook TryUsers.yml -i inventory

PLAY [test] *********************************************************************************************************************************************************************************

TASK [try users] ****************************************************************************************************************************************************************************
failed: [xxx.xxx.xxx.xxx] (item=centos) => {"ansible_loop_var": "item", "item": "centos", "msg": "Failed to connect to the host via ssh: Permission denied (publickey,password).", "unreachable": true}
failed: [10.5.162.71] (item=root) => {"ansible_loop_var": "item", "item": "root", "msg": "Failed to connect to the host via ssh: Permission denied (publickey,password).", "unreachable": true}
failed: [10.5.162.71] (item=ec2-user) => {"ansible_loop_var": "item", "item": "ec2-user", "msg": "Failed to connect to the host via ssh: Permission denied (publickey,password).", "unreachable": true}
fatal: [10.5.162.71]: UNREACHABLE! => {"changed": false, "msg": "All items completed", "results": [{"ansible_loop_var": "item", "item": "centos", "msg": "Failed to connect to the host via ssh: Permission denied (publickey,password).", "unreachable": true}, {"ansible_loop_var": "item", "item": "root", "msg": "Failed to connect to the host via ssh: Permission denied (publickey,password).", "unreachable": true}, {"ansible_loop_var": "item", "item": "ec2-user", "msg": "Failed to connect to the host via ssh: Permission denied (publickey,password).", "unreachable": true}], "skip_reason": "Host 10.5.162.71 is unreachable"}

PLAY RECAP **********************************************************************************************************************************************************************************
10.5.162.71                : ok=0    changed=0    unreachable=1    failed=0    skipped=1    rescued=0    ignored=0


```

finally:
        termios.tcsetattr(master, termios.TCSANOW, old)
    os.close(master)
    if p.returncode == 0:
        result = json.loads(to_text(stdout, errors='surrogate_then_replace'))
    else:
        try:
            result = json.loads(to_text(stderr, errors='surrogate_then_replace'))
        except getattr(json.decoder, 'JSONDecodeError', ValueError):
            
            result = {'error': to_text(stderr, errors='surrogate_then_replace')}
    if 'messages' in result:
        for level, message in result['messages']:
            if level == 'log':
                display.display(message, log_only=True)
            elif level in ('debug', 'v', 'vv', 'vvv', 'vvvv', 'vvvvv', 'vvvvvv'):
                getattr(display, level)(message, host=play_context.remote_addr)
            else:
                if hasattr(display, level):
                    getattr(display, level)(message)
                else:
                    display.vvvv(message, host=play_context.remote_addr)
    if 'error' in result:
        if play_context.verbosity > 2:
            if result.get('exception'):
                msg = "The full traceback is:\n" + result['exception']
                display.display(msg, color=C.COLOR_ERROR)
        raise AnsibleError(result['error'])
    return result['socket_path']