fetch-ssh-keys
fetch-ssh-keys is small shell command to get users public SSH keys
from different cloud services like GitHub.
[!NOTE]
Tested only on Linux and Mac. If you test on any other platform,
please me know!
Usage
fetch-ssh-keys <source name> <parameters> <output file>
For example fetch users public SSH keys from GitHub my-lovely-team
team in my-awesome-company organization and output in SSH
authorized_keys format
# Fetch 'my-lovely-team' keys in 'my-awesome-company' organisation
fetch-ssh-keys github --organization my-awesome-company --team my-lovely-team --token YOUR-TOKEN-HERE ./the-keys
# Fetch 'ernoaapa' and 'arnested' public keys
fetch-ssh-keys github --user ernoaapa --user arnested  --token YOUR-TOKEN-HERE ./the-keys
# Fetch 'ernoaapa/fetch-ssh-keys' deploy keys (requires a Github token with the `repo` or `public_repo` scope)
fetch-ssh-keys github --deploy-key ernoaapa/fetch-ssh-keys  --token YOUR-TOKEN-HERE ./the-keys
Tool can be used for example to automatically update
.ssh/authorized_keys file by giving path to .ssh/authorized_keys
as last argument and adding the script to cron job.
Installation
- Download binary from latest
release
or install with Go: go install arnested.dk/go/fetch-ssh-keys@latest
- Give execution rights (chmod +x fetch-ssh-keys) and add it into
your $PATH
Configuration
| Parameter | Required | Description | 
| --format | No (default ssh) | Output format. Only ssh authorized_keys format supported for now | 
| --file-mode | No (default 0600) | File permissions when writing to a file | 
| --comment | No (default none) | Include COMMENT at top and bottom | 
GitHub
| Parameter | Description | 
| --organization | Name of the organization which members keys to pick | 
| --team | Name or slug of the team which members keys to pick | 
| --user | Name of the user which keys to pick | 
| --deploy-key | Name of the owner/repo which deploy keys to pick | 
| --token | GitHub API token to use for communication. Without token you get only public members of the organization. | 
| --public-only | Return only members what are publicly members of the given organization | 
You can give --organisation (optionally combined with --team flag)
and/or one or more --user or --deploy-key flags.
The --deploy-key parameter requires a Github token with the repo
or public_repo scope.
Development
Get dependencies
go get ./...
Run
go run main.go github --output ssh