role ssh_authorized_keys
==============================
Ansible Rolle to manage and deploy ssh keys of admin and non-admin users
combinations
---------------
It is highly recomended to use this role together with a role to manage users and to manage the sshd configuration.
The following roles are tested in combination and work well - at least for the user [DO1JLR](https://github.com/do1jlr):
- [github.com/chaos-bodensee/role-manage_users](https://github.com/chaos-bodensee/role-manage_users.git)
- [github.com/chaos-bodensee/role-ssh_authorized_keys](https://github.com/chaos-bodensee/role-ssh_authorized_keys.git) *(this one)*
- [github.com/chaos-bodensee/role_sshd](https://github.com/chaos-bodensee/role_sshd.git)
```txt
Protipp:
Deploy the manage_users role *before* deploying the ssh keys.
If the user does not exist it is hard to add a ssh key for him!
```
Variables
---------
* ``admins`` (default ``[]``):
A list of ``ssh`` keys allowed to log in as `root`.
* ``accounts`` (default ``[]``):
A list of usernames that will be created on this host, if they don't exisit
* `users` (default `{}`):
A dict of user names mapping to lists of ``ssh`` keys
allowed to log in to the given user account.
* ``ssh_public_key_store`` (default ``ssh_public_keys``):
A directory path where the public key files can be found by ansible.
For aditional variables please have a look into ``defaults/main.yml``!
To add extra SSH Keys from github to a user use the ``github_users: {}`` settings
Files
-----
This role assumes that the *public* parts of all required ``ssh`` keys
can be found within the directory ``ssh_public_key_store``. The file
names must follow the convention: ``username_idalg.pub`` are are matched
by the ``username`` part.
Examples
--------
Alice and Bob may log in and are allowed to become ``root`` with the ``sudo`` command on this host:
```
admins:
- alice
- bob
```
Alice, Bob and Eve may log in to ther own user accounts via ssh:
```
users:
alice:
- alice
eve:
- eve@device1
- eve@device2
```
Eve can do so with two different `ssh` keys. Alice only with his only SSH Key.
The `files/ssh_public_keys/` contains the following files:
```
alice_ed25519.pub
bob_ed25519.pub
eve@device1_ed25519.pub
eve@device2_ed25519.pub
```
Alice, Bob and Eve want to be users on this host:
```
accounts:
- alice
- bob
- eve
```
Add ssh keys from github user ``DO1JLR`` for local user L3D
```
github_users:
l3d:
- do1jlr
```
Generate ed25519 SSH Keys
--------------------------------
```bash
ssh-keygen -t ed25519
```