<!--- Verify first that your issue is not already reported on GitHub -->
<!--- Also test if the latest release and devel branch are affected too -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
In the openssh_keypair module, `set_fs_attributes_if_different` is not called on the public key, so the owner and group do not get set on the .pub file containing the public key.

I haven't tested it or reasoned about the code, but this may only occur when trying to run the task when the public key already exists.

<https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/crypto/openssh_keypair.py#L231>
In this line, file_args only receives the private key file location.

Additionally, there are "isPublicKeyValid" and "isPrivateKeyValid", and in the private key one we can see here <https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/crypto/openssh_keypair.py#L254> that we check the permissions for the private key, but there is no corresponding check in the public key.

##### ISSUE TYPE
- Bug Report

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

openssh_keypair

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
ansible 2.8.4
  config file = <path_inside_home_directory>/ansible.cfg
  configured module search path = ['<home_directory>/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.7.4 (default, Jul 16 2019, 07:12:58) [GCC 9.1.0]

```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below
DEFAULT_HOST_LIST(<path_inside_home_directory>/aws-remote-work/ansible.cfg) = ['<path_inside_home_directory>/aws-remote-work/hosts']

```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
host: Linux host-machine 5.2.9-arch1-1-ARCH #1 SMP PREEMPT Fri Aug 16 11:29:43 UTC 2019 x86_64 GNU/Linux
remote: Linux remote-machine 4.9.0-9-amd64 #1 SMP Debian 4.9.168-1+deb9u5 (2019-08-11) x86_64 GNU/Linux


##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->
I am running the playbook with --become, so that it's executing as root
<!--- Paste example playbooks or commands between quotes below -->
```yaml
- name: create ssh keypair in user home directory
  openssh_keypair:
    path: "/home/{{user_name}}/.ssh/my_ssh_key"
    type: ecdsa
    owner: "{{user_name}}"
    group: "users"
    mode: "u=rw,g=,o=" 
```

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
my_ssh_key should have permissions like
`-rw------- 1 user_name  users`
my_ssh_key.pub should have the same permissions:
`-rw------- 1 user_name  users`

##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->

only the private key has the correct permissions, and the public key has permissions
`-rw-r--r-- 1 root root`

module.fail_json(
            name=base_dir,
            msg='The directory %s does not exist or the file is not a directory' % base_dir
        )
    keypair = Keypair(module)
    if keypair.state == 'present':
        if module.check_mode:
            result = keypair.dump()
            result['changed'] = module.params['force'] or not keypair.isPrivateKeyValid(module) or not keypair.isPublicKeyValid(module)
            module.exit_json(**result)
        try:
            keypair.generate(module)
        except Exception as exc:
            module.fail_json(msg=to_native(exc))
    else:
        if module.check_mode:
            keypair.changed = os.path.exists(module.params['path'])
            if keypair.changed:
                keypair.fingerprint = {}
            result = keypair.dump()
            module.exit_json(**result)
        try:
            keypair.remove()
        except Exception as exc:
            module.fail_json(msg=to_native(exc))
    result = keypair.dump()
    module.exit_json(**result)
if __name__ == '__main__':
    main()