8000 Releases · derekg/ts-ssh · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Releases: derekg/ts-ssh

v0.4.0: Security Hardening and Post-Quantum Cryptography

22 Jun 17:43
56c7c25
Compare
Choose a tag to compare

ts-ssh v0.4.0 - Security Hardening and Post-Quantum Cryptography

This release focuses on security enhancements, post-quantum cryptography preparation, and code quality improvements.

🔒 Security Enhancements

Enterprise-Grade Security Hardening

  • Modern SSH Key Discovery: Ed25519 prioritized over legacy RSA keys
  • TTY Security: Multi-layer validation preventing hijacking attacks
  • Process Protection: Credential masking in process lists and environment
  • Atomic File Operations: Race condition prevention in file handling
  • Host Key Verification: Enhanced verification against ~/.ssh/known_hosts
  • Cross-Platform Security: Platform-specific implementations for Windows/macOS/Linux

Critical Vulnerability Fixes

  • CVE-TS-SSH-001: Host key verification bypass protections added
  • CVE-TS-SSH-002: Credential exposure in process lists eliminated
  • CVE-TS-SSH-003: File permission race conditions resolved
  • CVE-TS-SSH-004: Unsafe TTY access vulnerabilities fixed

🔮 Post-Quantum Cryptography Preparation

Quantum-Resistant Infrastructure

  • Algorithm Support: Foundation for sntrup761x25519-sha512@openssh.com and other PQC algorithms
  • Algorithm Agility: Framework for seamless cryptographic transitions
  • Monitoring System: PQC usage tracking and reporting capabilities
  • Command-Line Flags: --pqc, --pqc-level, --pqc-report for quantum cryptography control

🌍 Internationalization

Multi-Language Support

  • Spanish Language: Complete CLI translation (--lang es)
  • Language Detection: Automatic detection from environment variables (LANG, TS_SSH_LANG)
  • Extensible Framework: Ready for additional language support

🛠️ Technical Improvements

Code Quality and Architecture

  • Modular Refactoring: Clean separation with internal/ package structure
  • Security Package: Dedicated internal/security/ for security operations
  • PQC Package: New internal/crypto/pqc/ for quantum cryptography
  • Comprehensive Testing: Enhanced test coverage with security-focused scenarios
  • Cross-Platform Compatibility: Improved Windows/macOS/Linux support

Documentation Updates

  • Realistic Claims: Removed inconsistent numerical scores from documentation
  • Security Architecture: Comprehensive security documentation
  • Project Guidelines: Added guidance for quality assessment practices

📊 Technical Metrics

  • 80+ Tests: Comprehensive test suite including security scenarios
  • 5 Internal Packages: Modular architecture for maintainability
  • Cross-Platform: Full Windows/macOS/Linux compatibility
  • Security Events: Comprehensive audit logging and monitoring

🚨 Breaking Changes

None - this release maintains full backwards compatibility with existing ts-ssh usage.

📝 Installation

# Using go install (recommended)
go install github.com/derekg/ts-ssh@v0.4.0

# Build from source
git clone https://github.com/derekg/ts-ssh.git
cd ts-ssh
git checkout v0.4.0
go build -o ts-ssh .

🆕 New Usage Examples

Multi-Language Support

# Use Spanish interface
ts-ssh --lang es --list

# Set permanent language preference
export TS_SSH_LANG=es
ts-ssh --help

Post-Quantum Cryptography (Preparation)

# Enable PQC monitoring (when available)
ts-ssh --pqc-report

# Future: PQC algorithm selection
ts-ssh --pqc-level 2 your-server  # (when PQC is fully implemented)

📋 Full Changelog

Security:

  • Comprehensive security hardening with CVE fixes
  • Modern SSH key discovery (Ed25519 priority)
  • TTY security and process protection enhancements
  • Atomic file operations and race condition prevention

Features:

  • Spanish language support and i18n framework
  • Post-quantum cryptography infrastructure
  • Enhanced cross-platform compatibility

Quality:

  • Major code quality improvements and refactoring
  • Comprehensive test coverage expansion
  • Modular internal package architecture

Documentation:

  • Removed inconsistent quality scores
  • Enhanced security architecture documentation
  • Realistic security implementation claims

This release positions ts-ssh as a secure, future-ready SSH client with enterprise-grade security features and quantum-cryptography readiness.

v0.3.0 - Architecture Improvements and i18n

21 Jun 17:30
Compare
Choose a tag to compare

v0.3.0 - Architecture Improvements and i18n

⚠️ Note: This project now follows Semantic Versioning. Since the API is still evolving, we're using 0.x.y versions:

  • 0.x.Y (minor) - new features, improvements (backward compatible)
  • 0.x.y (patch) - bug fixes (backward compatible)
  • X.y.z (major) - will be used for first stable API (v1.0.0+)

🎯 New Features

🌍 Spanish Language Support

  • Complete Spanish localization for CLI help, usage examples, and error messages
  • Multiple language detection methods: --lang, TS_SSH_LANG, LANG, LC_ALL
  • Dynamic help display that respects language preferences
  • Extensible i18n framework for future language additions

⚡ Power CLI Features

  • Multi-host operations with parallel execution support
  • Built-in tmux session management for concurrent connections
  • Advanced file transfer operations across multiple hosts
  • Host discovery and interactive selection (--pick)

🏗️ Major Improvements

🧹 Code Architecture Cleanup

  • Removed 180+ lines of dead TUI code and dependencies
  • Eliminated unused dependencies: github.com/rivo/tview, github.com/gdamore/tcell/v2
  • Consolidated 85+ lines of duplicated SSH connection logic
  • Modular code organization with focused helper functions

🐛 Critical Bug Fixes

  • FIXED: Password prompts now display correctly (user@host instead of garbled text)
  • FIXED: i18n formatting issues throughout the application
  • FIXED: Race conditions in parallel authentication and terminal management
  • FIXED: Windows cross-compilation compatibility

🧪 Enhanced Testing & Quality

  • Comprehensive test suite: 14.5% → 22% coverage improvement
  • New test files: i18n_test.go, ssh_helpers_test.go, terminal_state_test.go
  • Race condition testing: Concurrent access validation for critical components
  • Thread safety: Improved synchronization and mutex usage

🔧 Cross-Platform Support

Pre-built binaries for all major platforms:

  • Linux: AMD64, ARM64
  • macOS: AMD64 (Intel), ARM64 (Apple Silicon)
  • Windows: AMD64, ARM64

💾 Installation

Quick Install (Linux/macOS)

# Linux AMD64
curl -L -o ts-ssh https://github.com/derekg/ts-ssh/releases/download/v0.3.0/ts-ssh-linux-amd64
chmod +x ts-ssh && sudo mv ts-ssh /usr/local/bin/

# macOS (detect architecture automatically)
curl -L -o ts-ssh https://github.com/derekg/ts-ssh/releases/download/v0.3.0/ts-ssh-darwin-$(uname -m  < /dev/null |  sed 's/x86_64/amd64/')
chmod +x ts-ssh && sudo mv ts-ssh /usr/local/bin/

Windows

Download the appropriate .exe file:

Build from Source

git clone https://github.com/derekg/ts-ssh.git
cd ts-ssh
go build -ldflags "-X main.version=v0.3.0" .

🚀 Usage Examples

Spanish Interface

# Use Spanish interface
ts-ssh --lang es --help
ts-ssh --lang es --list

# Set via environment  
LANG=es ts-ssh --help

Multi-Host Operations

# Interactive host selection
ts-ssh --pick

# Parallel command execution
ts-ssh --exec "uptime" host1,host2,host3 --parallel

# Multi-host file transfer
ts-ssh --copy "localfile host1,host2:/remote/path"

📈 Impact

Code Quality Metrics:

  • Removed: 568 lines (dead code elimination)
  • Added: 796 lines (tests + improvements)
  • Net Result: Cleaner, more maintainable, better tested codebase

User Experience:

  • Fixed critical formatting bugs affecting daily usage
  • Enhanced error messages and troubleshooting
  • Multi-language support for international users
  • Better cross-platform compatibility

🔄 Migration from Previous Versions

  • No breaking changes - all existing functionality preserved
  • Improved reliability - better error handling and user feedback
  • Enhanced features - new multi-host and i18n capabilities

Semantic Versioning: This release follows semver.org guidelines. Thanks to the Hacker News community for the feedback on proper versioning practices!

Full Changelog: v0.2.0...v0.3.0

v0.2.0 - SSH Client with Escape Sequences and SCP

21 Jun 17:31
Compare
Choose a tag to compare

v0.2.0 - SSH Client with Escape Sequences and SCP

🎯 New Features

🔄 Interactive Escape Sequence (~.)

At any point in an interactive session, type ~. at the start of a new line to immediately terminate the SSH connection and restore your terminal.

⚡ Non-Interactive Command Execution

Pass a remote command directly on the command line (e.g. ts-ssh host uname -a). The client runs the command, streams its output, and returns its exit code.

🔀 ProxyCommand-Style TCP Forwarding (-W)

Implements ssh -W host:port behavior over Tailscale. Use ts-ssh -W target:22 as a ProxyCommand in ssh or scp configurations:

scp -o ProxyCommand="ts-ssh -W %h:%p user@gateway" localfile remote:/path

🏷️ Version Flag (-version)

Print the client version and exit:

go build -ldflags "-X main.version=v0.2.0" -o ts-ssh .

📚 Enhanced Documentation

  • Comprehensive usage examples in built-in help
  • Security notes about host-key verification
  • ProxyCommand integration examples

🔒 Security & Stability

  • Secure host-key verification against ~/.ssh/known_hosts by default
  • Interactive prompts for unknown hosts with MITM protection
  • Graceful shutdown on SIGINT/SIGTERM with terminal restoration
  • Insecure mode (-insecure) available for testing (discouraged)

🐛 Bug Fixes & Polish

  • Fixed quoting in ProxyCommand examples
  • Synchronized Tailscale auth-flow and client logs
  • Improved exit-status propagation for commands
  • Better error handling and user experience

🚀 Installation

Build from Source

git clone https://github.com/derekg/ts-ssh.git
cd ts-ssh
git checkout v0.2.0
go build -ldflags "-X main.version=v0.2.0" .

Note: This project now follows Semantic Versioning. This release adds significant new features while maintaining backward compatibility.

Full Changelog: v0.1.0...v0.2.0

v0.1.0 - Initial Release

31 Mar 21:02
Compare
Choose a tag to compare

This marks the first official release of ts-ssh, a command-line SSH client built with Go! 🎉

ts-ssh leverages Tailscale's tsnet library to establish a userspace connection to your Tailscale network. This allows you to SSH into your Tailscale nodes directly from the tool without needing the full Tailscale client daemon running locally.

✨ Features in this Release:

  • tsnet Integration: Connects directly to your Tailscale network in userspace.
  • Tailscale Authentication: Handles the device authentication flow via a browser link. Authentication state is stored locally (in ~/.config/ts-ssh-client by default) for subsequent runs.
  • SSH Authentication: Supports standard methods:
    • Public Key Authentication (including passphrase-protected keys via interactive prompt).
    • Password Authentication (via interactive prompt).
  • Interactive Sessions: Provides a full interactive PTY session, respecting terminal size changes.
  • Host Key Verification: Implements secure host key checking using ~/.ssh/known_hosts: 3E1D
    • Prompts interactively to add unknown host keys.
    • Provides strong warnings and prevents connection on host key mismatches (potential MITM).
  • Insecure Mode: Includes an -insecure flag to bypass host key checks (use with extreme caution!).
  • Basic Command-Line Interface: Supports standard SSH flags like -l (user) and -i (identity file).

Assets

Pre-compiled binaries are attached below for common platforms:

  • ts-ssh-darwin-arm64: For macOS on Apple Silicon (M1, M2, etc.)

To use a binary:

  1. Download the appropriate file for your system.
  2. Make it executable (e.g., chmod +x ./ts-ssh-darwin-arm64 on macOS/Linux).
  3. Run it! (See README for usage examples).
    • Note for macOS users: Gatekeeper might block the first run. Right-click the file -> "Open" -> "Open" in the dialog, or use xattr -d com.apple.quarantine ./<binary_name>.

Usage

Please see the README.md for detailed installation instructions (including building from source) and usage examples.

Feedback

This is the initial release. Please report any bugs, issues, or feature suggestions by opening an issue in the repository.

Thanks for checking out ts-ssh!

0