{"id":34659235,"url":"https://github.com/nicklasos/gosshit","last_synced_at":"2026-01-13T20:41:48.641Z","repository":{"id":330320101,"uuid":"1122283540","full_name":"nicklasos/gosshit","owner":"nicklasos","description":"Go ssh it! Manage your ~/.ssh/config","archived":false,"fork":false,"pushed_at":"2025-12-24T23:18:14.000Z","size":416,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-26T07:34:29.017Z","etag":null,"topics":["devops","go","golang","ssh","tui"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nicklasos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-24T12:19:49.000Z","updated_at":"2025-12-25T14:19:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nicklasos/gosshit","commit_stats":null,"previous_names":["nicklasos/gosshit"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/nicklasos/gosshit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicklasos%2Fgosshit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicklasos%2Fgosshit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicklasos%2Fgosshit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicklasos%2Fgosshit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nicklasos","download_url":"https://codeload.github.com/nicklasos/gosshit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicklasos%2Fgosshit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28399898,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-13T14:36:09.778Z","status":"ssl_error","status_checked_at":"2026-01-13T14:35:19.697Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["devops","go","golang","ssh","tui"],"created_at":"2025-12-24T18:39:21.060Z","updated_at":"2026-01-13T20:41:48.636Z","avatar_url":"https://github.com/nicklasos.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Go SSH it (gosshit)\n\nA vim-inspired terminal user interface (TUI) for managing SSH config files. Easily browse, search, edit, and connect to your SSH hosts with a beautiful, keyboard-driven interface.\n\n![Screenshot](screen.png)\n\n## Features\n\n- **Two-panel interface**: Browse hosts on the left, view details on the right\n- **Vim-like keybindings**: Navigate with `j`/`k`, search with `/`, and more\n- **Visit tracking**: Most frequently used hosts appear at the top\n- **Full CRUD operations**: Add, edit, and delete SSH config entries\n- **Search functionality**: Quickly find hosts by name, hostname, user, or description\n- **Preserves formatting**: Maintains comments and formatting in your SSH config file\n- **Descriptions**: Add descriptions to hosts for better organization\n- **Clear visit history**: Reset visit counts with `x` hotkey\n\n## Installation\n\n### Option 1: Homebrew (macOS/Linux) 🍺\n\n```bash\nbrew install nicklasos/tap/gosshit\n```\n\n### Option 2: Download Binary 📦\n\nDownload the latest binary for your platform from the [releases page](https://github.com/nicklasos/gosshit/releases).\n\n**macOS:**\n```bash\n# Intel Mac\ncurl -L https://github.com/nicklasos/gosshit/releases/latest/download/gosshit_Darwin_x86_64.tar.gz | tar xz\nsudo mv gosshit /usr/local/bin/\n\n# Apple Silicon (M1/M2)\ncurl -L https://github.com/nicklasos/gosshit/releases/latest/download/gosshit_Darwin_arm64.tar.gz | tar xz\nsudo mv gosshit /usr/local/bin/\n```\n\n**Linux:**\n```bash\n# AMD64\ncurl -L https://github.com/nicklasos/gosshit/releases/latest/download/gosshit_Linux_x86_64.tar.gz | tar xz\nsudo mv gosshit /usr/local/bin/\n\n# ARM64\ncurl -L https://github.com/nicklasos/gosshit/releases/latest/download/gosshit_Linux_arm64.tar.gz | tar xz\nsudo mv gosshit /usr/local/bin/\n```\n\n**Windows:**\nDownload the `.zip` file from [releases](https://github.com/nicklasos/gosshit/releases) and extract it to a directory in your PATH.\n\n### Option 3: Install with Go\n\n```bash\ngo install github.com/nicklasos/gosshit@latest\n```\n\nMake sure `$GOPATH/bin` or `$GOBIN` is in your PATH.\n\n## Usage\n\nSimply run:\n\n```bash\ngosshit\n```\n\nThe application will:\n1. Read your `~/.ssh/config` file (creating it if it doesn't exist)\n2. Load visit tracking data from `~/.gosshit` (creating it if it doesn't exist)\n3. Display all your SSH hosts sorted by visit frequency\n\n## Keybindings\n\n### Normal Mode (List View)\n\n- `j` / `↓` - Move down in the list\n- `k` / `↑` - Move up in the list\n- `/` - Enter search mode\n- `a` - Add a new host entry\n- `e` - Edit the selected host entry\n- `d` - Delete the selected host entry\n- `x` - Clear all visit counts (with confirmation)\n- `Enter` - Connect to the selected host via SSH\n- `q` / `Ctrl+C` - Quit the application\n\n### Search Mode\n\n- Type to filter the host list in real-time\n- `Enter` - Exit search mode and select first match\n- `Esc` - Cancel search and return to normal mode\n\n### Edit Mode\n\n- `Tab` - Move to the next field\n- `Shift+Tab` - Move to the previous field\n- `Enter` - Save changes\n- `Esc` - Cancel editing and return to normal mode\n\n### Delete Confirmation\n\n- `y` - Confirm deletion\n- `n` / `Esc` - Cancel deletion\n\n## SSH Config Format\n\nThe tool expects standard SSH config format. Descriptions are stored as comments above the Host entry:\n\n```\n# Description: My production server\nHost prod\n    HostName example.com\n    User deploy\n    Port 22\n    IdentityFile ~/.ssh/id_rsa\n```\n\n### Supported Fields\n\n- **Host** - The host alias (required)\n- **HostName** - The actual hostname or IP address (required)\n- **User** - Username for SSH connection (optional, defaults to \"root\" in editor)\n- **Port** - SSH port (optional, defaults to \"22\" in editor)\n- **IdentityFile** - Path to SSH private key (optional, enter path manually)\n- **Description** - Added as a comment above the Host entry\n\n## Visit Tracking\n\nThe tool tracks how often you connect to each host and automatically sorts them by visit frequency. This data is stored in `~/.gosshit` as a simple text file:\n\n```\nprod:42\ndev:15\nstaging:8\n```\n\n## Development\n\nTo build from source:\n\n```bash\ngit clone https://github.com/nicklasos/gosshit.git\ncd gosshit\ngo build -o gosshit\n```\n\n### Using the Makefile\n\nThe project includes a Makefile with convenient commands:\n\n```bash\nmake build         # Build the binary\nmake install       # Install to GOPATH/bin\nmake test          # Run tests\nmake test-verbose  # Run tests with verbose output\nmake coverage      # Run tests with coverage report (generates coverage.html)\nmake clean         # Remove build artifacts\nmake run           # Build and run the application\nmake fmt           # Format code with gofmt\nmake vet           # Run go vet\nmake check         # Run fmt, vet, and test\nmake help          # Show all available commands\n```\n\n### Running Tests\n\n```bash\n# Quick test run\nmake test\n\n# Verbose test output\nmake test-verbose\n\n# Generate coverage report\nmake coverage\n# Opens coverage.html in your browser\n```\n\n## Requirements\n\n- Go 1.21 or later\n- A terminal with support for ANSI colors\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicklasos%2Fgosshit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnicklasos%2Fgosshit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicklasos%2Fgosshit/lists"}