Skip to content

arnested/fetch-ssh-keys

 
 

Repository files navigation

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

About

CLI tool to fetch users SSH public keys

Resources

License

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Languages

  • Go 98.4%
  • Dockerfile 1.6%