Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

A cosy terminal UI for managing Azure Bastion SSH tunnels to your VMs.

FeaturesRunning the ApplicationUsage

Features

Preview 1 Preview 2

  • 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!

Running

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!

Build from Source

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

Usage

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

Keybindings

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)

Technology Stack

  • 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

Contributing

Contributions are welcome! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Setup

Development is managed with devenv, or just have a stable Rust toolchain installed.

devenv shell

Roadmap

  • 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

Licence

This project is licensed under the AGPL License - see the LICENCE file for details.

Support

If you run into issues or have questions, open an issue on GitHub.

About

An Azure Bastion wrapper specifically for ssh tunneling.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /