Skip to content

ankogit/ssh_keeper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

64 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SSH Keeper πŸ”

A beautiful and secure CLI tool for managing SSH connections with a modern TUI interface

License: MIT Go Version Platform

Built with ❀️ using Bubble Tea and Go


✨ Features

  • 🎨 Beautiful TUI Interface - Modern terminal user interface with colors and smooth animations
  • πŸ” Secure Password Storage - Master password with system keyring integration (macOS Keychain, Linux Secret Service, Windows Credential Manager)
  • πŸ”‘ Dual Authentication - Support for both password and SSH key authentication
  • πŸ“ Connection Management - Add, edit, delete, and organize your SSH connections
  • πŸ” Smart Search - Quick connection search and filtering
  • πŸ“€ Export/Import - Full compatibility with OpenSSH config format
  • ⚑ Fast & Lightweight - Built with Go for optimal performance
  • 🌍 Cross-Platform - Works on macOS, Linux, and Windows
  • πŸ”’ Open Source - MIT licensed, community-driven development

πŸš€ Quick Start

One-line Installation (Recommended)

macOS & Linux:

curl -fsSL https://raw.githubusercontent.com/ankogit/ssh_keeper/main/scripts/install.sh | bash

Windows (PowerShell):

iwr -useb https://raw.githubusercontent.com/ankogit/ssh_keeper/main/scripts/install.ps1 | iex

πŸ”„ АвтоматичСскоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ автоматичСски ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΈ ΡΠΊΠ°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ Ρ€Π΅Π»ΠΈΠ·Π°!

✨ Features of the installer:

  • πŸ” Auto-detects your OS and architecture
  • πŸ“₯ Downloads the correct version automatically
  • πŸ”§ Installs to system directory (/usr/local/bin)
  • βœ… Verifies installation success
  • 🎨 Beautiful colored output with progress

Manual Download & Install

Download the latest release for your platform:

Extract and Run

# Extract the archive
tar -xzf ssh-keeper-0.1.0-*.tar.gz  # Linux/macOS
# or unzip ssh-keeper-0.1.0-windows-amd64.zip  # Windows

# Make executable (Linux/macOS)
chmod +x ssh-keeper*

# Run
./ssh-keeper

πŸ“– ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ инструкция ΠΏΠΎ установкС: INSTALL.md | macOS Apple Silicon

Uninstall

macOS & Linux:

curl -fsSL https://raw.githubusercontent.com/ankogit/ssh_keeper/main/scripts/uninstall.sh | bash

Manual uninstall:

# Remove binary
sudo rm /usr/local/bin/ssh-keeper

# Remove configuration (optional)
rm -rf ~/.ssh-keeper

πŸ“Έ Screenshots

Note: Screenshots will be added here once the application is running

Main Menu

Main Menu Beautiful main menu with intuitive navigation

Connection List

Connection List View and manage your SSH connections

Add Connection

Add Connection Easy connection setup with form validation

πŸ› οΈ Installation

From Source

# Clone the repository
git clone https://github.com/ankogit/ssh_keeper.git
cd ssh_keeper

# Build the application
make build

# Run the application
make run

Using Make

# Build for current platform
make build

# Build for all platforms
make build-all

# Run in development mode
make run-dev

# Install system-wide
make install

Prerequisites

  • Go 1.24+ - Download Go
  • Make (optional, for using Makefile)

πŸ“– Usage

First Run

When you first run SSH Keeper, you'll be prompted to set up a master password. This password is used to encrypt your connection data and is stored securely in your system's keyring.

ssh-keeper

Main Menu Navigation

The application provides an intuitive main menu with the following options:

  • πŸ” View Connections - Browse and search your SSH connections
  • βž• Add Connection - Add a new SSH connection
  • βš™οΈ Settings - Configure application settings
  • πŸ“€ Export - Export connections to OpenSSH config
  • πŸ“₯ Import - Import connections from OpenSSH config
  • ❌ Quit - Exit the application

Keyboard Shortcuts

Key Action
↑/↓ Navigate menu items
Enter Select item
Ctrl+S Search connections
Esc Go back
Q Quit application

Adding Connections

  1. Select "βž• Add Connection" from the main menu
  2. Fill in the connection details:
    • Name: A friendly name for your connection
    • Host: Server hostname or IP address
    • Port: SSH port (default: 22)
    • User: Username for SSH connection
    • Authentication: Choose between password or SSH key
  3. Save your connection

Authentication Methods

Password Authentication

  • Enter your password when adding the connection
  • Password is encrypted and stored securely
  • No need to enter password each time you connect

SSH Key Authentication

  • Specify the path to your SSH private key
  • Supports standard SSH key formats
  • Works with existing SSH key infrastructure

βš™οΈ Configuration

SSH Keeper stores its configuration in ~/.ssh-keeper/:

  • config.yaml - Application settings
  • connections.yaml - SSH connections (encrypted)
  • Passwords are stored securely using system keyring

Environment Variables

Create a .env file for development:

cp env.example .env
Variable Description Default Required
DEBUG Enable debug mode false No
ENV Environment (development/production) development No
CONFIG_PATH Path to application config file ~/.ssh-keeper/config No
APP_SIGNATURE Application signature for security - Yes
SSH_CONFIG_PATH Path to SSH config file ~/.ssh/config No

CI/CD Setup

For production builds, configure GitHub Environment variables:

  1. Go to Settings β†’ Environments
  2. Create/Edit "Production" environment
  3. Add environment variable:
    • Name: APP_SIGNATURE
    • Value: ssh-keeper-prod-signature

See CI/CD Documentation for detailed setup instructions.

πŸ”’ Security

SSH Keeper prioritizes security and follows best practices:

  • Encrypted Storage: All connection data is encrypted using AES-256
  • System Keyring Integration: Master password stored in system keyring (Keychain/Secret Service/Credential Manager)
  • Memory Management: Sensitive data cleared from memory after use
  • No Plain Text: No passwords stored in plain text files
  • Open Source: Full source code available for security audit

πŸ—οΈ Development

Project Structure

ssh_keeper/
β”œβ”€β”€ cmd/ssh-keeper/          # Main application entry point
β”œβ”€β”€ internal/
β”‚   β”œβ”€β”€ models/              # Data models (Connection, Config)
β”‚   β”œβ”€β”€ ui/                  # TUI components and screens
β”‚   β”‚   β”œβ”€β”€ components/      # Reusable UI components
β”‚   β”‚   └── screens/         # Application screens
β”‚   β”œβ”€β”€ services/            # Business logic services
β”‚   β”œβ”€β”€ ssh/                 # SSH client integration
β”‚   └── config/              # Configuration management
β”œβ”€β”€ docs/                    # Documentation
β”œβ”€β”€ scripts/                 # Build and utility scripts
β”œβ”€β”€ Formula/                 # Homebrew formulas
└── Makefile                 # Build automation

Development Setup

# Clone the repository
git clone https://github.com/ankogit/ssh_keeper.git
cd ssh_keeper

# Download dependencies
make deps

# Set up development environment
make dev-setup

# Run tests
make test

# Run with coverage
make test-coverage

CI/CD Pipeline

SSH Keeper uses GitHub Actions for automated CI/CD:

  • βœ… Automated Testing - Tests run on every push/PR
  • βœ… Multi-platform Builds - Linux, macOS, Windows
  • βœ… Automatic Releases - Tag-based releases with artifacts
  • βœ… Security Scanning - Code and dependency vulnerability checks
  • βœ… Code Quality - Linting and formatting checks

Create a release:

git tag v0.1.0
git push origin v0.1.0

πŸ“– CI/CD Documentation: CI_CD_DOCUMENTATION.md

Building

# Build for current platform
make build

# Build for all platforms
make build-all

# Create release packages
make release

🀝 Contributing

We welcome contributions! SSH Keeper is an open source project under the MIT license.

How to Contribute

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

Development Guidelines

  • Follow Go best practices and conventions
  • Add tests for new functionality
  • Update documentation as needed
  • Ensure all tests pass before submitting PR

Reporting Issues

Found a bug? Have a feature request? Please open an issue!

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

Why MIT License?

The MIT License is one of the most permissive open source licenses, allowing:

  • βœ… Commercial use - Use in commercial projects
  • βœ… Modification - Modify and create derivatives
  • βœ… Distribution - Distribute copies
  • βœ… Private use - Use privately
  • βœ… Patent use - Use patented technology

This makes SSH Keeper accessible to everyone while maintaining the freedom to use, modify, and distribute the software.

πŸ™ Acknowledgments

SSH Keeper is built with amazing open source projects:

πŸ“Š Project Status

  • βœ… Core Features - Connection management, secure storage
  • βœ… TUI Interface - Beautiful terminal interface
  • βœ… Cross-Platform - macOS, Linux, Windows support
  • βœ… Security - Encrypted storage, system keyring integration
  • πŸ”„ Documentation - Comprehensive docs and examples
  • πŸ”„ Testing - Unit tests and integration tests
  • πŸ”„ Packaging - Homebrew, Debian packages

🌟 Star History

Star History Chart


Made with ❀️ by the SSH Keeper community

⭐ Star this project | πŸ› Report Bug | πŸ’‘ Request Feature | πŸ“– Documentation

About

Ssh data keeper tool

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors