Skip to content

v0.1.0 - Modernized Azure Cloud Shell CLI

Choose a tag to compare

@dcasati dcasati released this 12 Dec 23:48
· 6 commits to master since this release

Release v0.1.0 - Modernized Azure Cloud Shell CLI

What's New

This release modernizes the 7-year-old azssh codebase to work with current Azure Cloud Shell infrastructure (2025) and brings it up to modern Go standards.

Major Changes

Azure Cloud Shell API Updates

  • Updated API version from 2017-08-01-preview to 2023-02-01-preview
  • Fixed websocket connections using Microsoft Terminal's Azure connection logic
  • Implemented Service Bus relay support with $hc path for proper websocket routing
  • Added required headers: Referer and x-ms-console-preferred-location
  • Implementation based on Windows Terminal's AzureConnection.cpp

Go Modernization

  • Added Go modules support (go.mod, go.sum)
  • Replaced deprecated io/ioutil with io and os packages
  • Replaced deprecated golang.org/x/crypto/ssh/terminal with golang.org/x/term
  • Updated to Go 1.21 as minimum version

Dependency Updates

  • Cobra CLI: v1.8.1 (latest)
  • Gorilla WebSocket: v1.5.3 (latest)
  • Azure Go AutoRest: v0.9.24
  • golang.org/x/term: v0.27.0

Code Quality Improvements

  • Added comprehensive error handling throughout the codebase
  • Improved error messages with proper context
  • Better nil checking for API responses
  • Modernized code patterns following current Go best practices

Installation

go install github.com/dcasati/azssh@v0.1.0

Or build from source:

git clone https://github.com/dcasati/azssh.git
cd azssh
go build

Usage

# Launch Azure Cloud Shell
azssh

# Choose your shell type
azssh --shell bash
azssh --shell pwsh

Technical Details

The websocket connection now properly handles Azure Service Bus relay URLs by:

  1. Converting the console URL to websocket protocol
  2. Inserting the $hc (hybrid connection) path for Service Bus relay
  3. Constructing proper terminal session URLs
  4. Supporting both simple and Service Bus relay connection patterns

Breaking Changes

None - the CLI interface remains the same.

Credits

Original implementation by @noelbundick
Modernization based on Microsoft Terminal's Azure Connection implementation