An open API service indexing awesome lists of open source software.

https://github.com/gabocapo/gdkg

Go Deploy Key Gen - Secure deploy key generator built with Go
https://github.com/gabocapo/gdkg

cli deploy-keys github go

Last synced: 11 months ago
JSON representation

Go Deploy Key Gen - Secure deploy key generator built with Go

Awesome Lists containing this project

README

          

Image

# 🔐 gdkg - Go Deploy Key Generator

`gdkg` is a lightweight Go CLI tool for securely generating, managing, and revoking **SSH Deploy Keys** for GitHub repositories.
It automates deploy key workflows and ensures a clean, secure setup.

---

## ✨ Features

- ✅ Generate SSH deploy keys with a single command
- 🔁 Cleanly revoke deploy keys (including SSH config cleanup)
- 🔒 Uses modern `ed25519` keys
- 🧰 CLI mode and interactive TUI
- 📦 Small, portable binary with no dependencies
- ⚙️ Compatible with CI/CD pipelines and personal projects

---

## 📦 Installation / Run

### From source (if you want to develop or test it)

> Requires Go 1.20

```
git clone https://github.com/GaboCapo/gdkg.git
```

```
cd gdkg
```

```
./build.sh
```

Binary will be available as `./gdkg`.

### Run from Releases (if you want to use it right away without development)

Download the appropriate binary for your platform from the [Releases](https://github.com/GaboCapo/gdkg/releases) section and place it in a directory of your choice.

> **Note:** This is a console-based CLI tool and must be executed from a terminal or command prompt. Double-clicking will not work.

#### Example (Linux):

1. **Make the binary executable:**

```bash
chmod +x gdkg-v1.0.0-linux-amd64
```

2. **Run the application via terminal:**

```bash
./gdkg-v1.0.0-linux-amd64
```

3. **Console output will look like this:**

```text
=== GitHub Deploy Key Generator ===
1: Generate deploy key
2: Remove deploy key
3: Quit
Please select an option:
```

---

## 🚀 Usage

### Interactive mode

```
./gdkg
```

Menu guides you through:

- [1] Generate new deploy key
- [2] Revoke existing key
- [3] Exit

## 📁 File structure

Default storage: `~/.ssh/gdkg`

```
~/.ssh/gdkg/
├── config # SSH config file with host entries
├── my-repo_deploy-key # Private key
└── my-repo_deploy-key.pub # Public key (for GitHub)
```

`config` updates automatically on key creation.

---

## 🔐 Security

- Ed25519 keys
- Deploy keys separated from main SSH folder
- SSH config only updated with necessary entries
- No data sent externally

---

## 📜 License

MIT License © [GaboCapo](https://github.com/GaboCapo)

---

## 🧠 Credits

Built to automate GitOps workflows no manual copy-paste needed.

🔐 This repo is pushed with a deploy key generated by this tool

Made with ❤️ in Go.