az-burrow Built with Rust Licence
A cosy terminal UI for managing Azure Bastion SSH tunnels to your VMs.
Features • Running the Application • Usage
- Remember your VMs in a simple config file
- Create SSH tunnels through Azure Bastion with a few keystrokes
- Automatic SSH certificate validation and renewal
- Clean, minimal terminal interface that doesn't get in your way
Star ⭐ this repository if you find it useful!
Note
You will need to the Azure CLI installed and be logged in to your account with a valid subscription selected. You will also need to have intialised the certificate using something like: az ssh cert --file .ssh/az_ssh_config/azure-bastion-vm/id_rsa.pub-aadcert.pub --public-key-file .ssh/az_ssh_config/azure-bastion-vm/id_rsa.pub
Download the latest release and put it in a folder you want. Then from the folder you use ./az-burrow (Windows: .\az-burrow).
If you are on nix and use the command, you can run it using the included flake.nix.
nix run "github:hegde-atri/az-burrow"Optionally you can add this to your path to use it from anywhere!
git clone https://github.com/hegde-atri/az-burrow cd az-burrow # Build a release binary (output: target/release/az-burrow) cargo build --release # Or install it onto your PATH cargo install --path .
To cross-compile for Windows:
cargo build --release --target x86_64-pc-windows-gnu
Create a burrow.config.yaml file with your Azure VMs:
machines: - name: my-vm resource_group: MY-RG target_resource_id: /subscriptions/.../virtualMachines/my-vm bastion_name: my-bastion bastion_resource_group: BASTION-RG # Optionally ssh config path ssh_config_path: ~/.ssh/az_ssh_config/azure-bastion-vm
Then just run:
./az-burrow
You can also specify a different config file:
./az-burrow /path/to/my-config.yaml
Press ? at any time to see this cheat-sheet inside the app.
| Key | Action |
|---|---|
j / k (or ↑ / ↓) |
Move selection (wraps around) |
g / G |
Jump to top / bottom |
/ |
Filter tunnels by name (Esc to clear) |
Enter |
Start / stop the selected tunnel |
a |
Start / stop all tunnels |
Space |
View the selected tunnel's logs |
r |
Regenerate the certificate for the selected tunnel |
c |
Create a new tunnel |
d / Del |
Delete the selected tunnel |
? |
Toggle the help overlay |
q / Ctrl+C |
Quit (asks to confirm only when tunnels are running) |
- Rust - Fast, reliable, and compiles to a single binary
- ratatui - For the terminal UI
- tokio - Async runtime driving the tunnel and certificate background tasks
- Azure CLI - For interacting with Azure Bastion
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Development is managed with devenv, or just have a stable Rust toolchain installed.
devenv shell
- Add VM machine config to config file
- Automatic certificate renewal
- Persist tunnel list across sessions (restored as Inactive on startup)
- Create and delete tunnels from within the app
- Preset tunnel configs from config file
- Automatic certificate initialisation
- Windows support
This project is licensed under the AGPL License - see the LICENCE file for details.
If you run into issues or have questions, open an issue on GitHub.