A modern, interactive SSH connection manager with a beautiful terminal UI
Built with Go • Inspired by lazygit • Powered by Bubble Tea
|
|
🌐 SSH SERVERS 🚀 📄 SSH CONFIG PREVIEW ⚙️
┌─────────────────────┬─────────────────────────────────┐
│ 💻 web-server │ │
│ 🌐 database-srv │ Host web-server │
│ 🌐 dev-server │ HostName example.com │
│ 🌐 production │ User admin │
│ │ Port 22 │
├─────────────────────┤ IdentityFile ~/.ssh/key │
│ 📋 SERVER DETAILS 🔍│ │
│ Host: web-server │ Host database-srv │
│ Hostname: example.com│ HostName db.example.com │
│ User: admin │ User dbadmin │
│ Port: 22 │ Port 5432 │
└─────────────────────┴─────────────────────────────────┘
q: quit | ↑↓: navigate | ⏎: connect | e: edit | ESC/q: exit editor | 🖱️: click
Three-panel layout with server list, details, and live config preview
Prerequisites:
- Go 1.23 or higher
- Git
Step-by-step build instructions:
# 1. Clone the repository
git clone https://github.com/pozgo/OhMySSH.git
cd OhMySSH
# 2. Download and resolve Go module dependencies
go mod tidy
# 3. Build for current platform
make build
# 4. Run the application
./OhMySSHAlternative build commands:
# Build for all platforms (Linux, macOS, Windows)
make build-all
# Run tests
make test
# Clean build artifacts
make clean
# Install to system (requires sudo)
make installIf you encounter dependency issues:
# Force download specific modules
go mod download github.com/charmbracelet/bubbles
go mod download github.com/charmbracelet/bubbletea
go mod download github.com/charmbracelet/lipgloss
# Then retry the build
make build# 1. Launch OhMySSH
./OhMySSH
# 2. Navigate with ↑↓ or mouse
# 3. Press Enter to connect
# 4. Press 'e' to edit configs
|
|
|
|
🖱️ Click Server |
🖱️ Click Config |
🖱️ Right Click |
|
|
|
# 🌐 Production Web Server
Host web-server
HostName production.example.com
User admin
Port 22
IdentityFile ~/.ssh/production_key
ServerAliveInterval 60
ForwardAgent yes
# 🗄️ Database Server with Jump Host
Host db-server
HostName 10.0.1.100
User dbadmin
Port 5432
ProxyJump bastion.example.com
LocalForward 5432 localhost:5432
# 🔧 Development Environment
Host dev-server
HostName dev.example.com
User developer
Port 2222
IdentityFile ~/.ssh/dev_key
ForwardX11 yes
StrictHostKeyChecking no
# 🚀 Kubernetes Cluster
Host k8s-master
HostName k8s.example.com
User k8s-admin
IdentityFile ~/.ssh/k8s_key
DynamicForward 8080
🔍 Supported SSH Options
| Option | Description | Example |
|---|---|---|
HostName |
Server address | example.com |
User |
Username | admin |
Port |
SSH port | 22 |
IdentityFile |
Private key | ~/.ssh/id_rsa |
ProxyJump |
Jump host | bastion.com |
LocalForward |
Port forwarding | 8080:localhost:80 |
DynamicForward |
SOCKS proxy | 1080 |
ForwardAgent |
SSH agent | yes |
ForwardX11 |
X11 forwarding | yes |
ServerAliveInterval |
Keep alive | 60 |
🚀 Connecting to server via OhMySSH...
┌─────────────────────────────────────────┐
│ 💻 Server: web-server │
│ 🌐 Host: production.example.com │
│ 👤 User: admin │
│ 🔌 Port: 22 │
└─────────────────────────────────────────┘
Command: ssh web-server
🔍 Retrieving authentication details...
🔐 Available methods: SSH key, password
🔑 Attempting SSH key authentication...
🚀 Connecting with SSH key authentication...
✅ Connected successfully!Clean connection output with server details and authentication status
|
|
make build # Current platform
make build-all # All platforms
make test # Run tests
make install # System install
make clean # Clean artifacts |
|
📁 Project Structure
🏗️ ohmyssh/
├── 📁 cmd/ohmyssh/ # 🚀 Main application
│ └── 📄 main.go
├── 📁 pkg/parser/ # 🔧 SSH config parser
│ ├── 📄 ssh_config.go
│ └── 📄 ssh_config_test.go
├── 📁 test/ # 🧪 Test fixtures
│ ├── 📁 fixtures/
│ └── 📄 README.md
├── 📁 build/ # 📦 Build outputs
├── 📁 assets/ # 🎨 Images & docs
├── 📄 Makefile # 🛠️ Build automation
├── 📄 build.sh # 📦 Cross-platform builds
├── 📄 go.mod # 📋 Go dependencies
└── 📄 README.md # 📖 This file
❌ SSH Config Not Found
# Check if config exists
ls -la ~/.ssh/config
# Create if missing
touch ~/.ssh/config
chmod 600 ~/.ssh/config
# Verify permissions
stat -c %a ~/.ssh/config # Should be 600⌨️ Editor Not Working
# Reset to normal mode
Press: ESC ESC ESC or q
# Force quit editor
Type: :q! or press q in normal mode
# Check terminal compatibility
echo $TERM🔗 Connection Fails
# Test SSH config manually
ssh -F ~/.ssh/config -T your-server
# Debug mode
ssh -vvv your-server
# Check OhMySSH debug mode
DEBUG=1 ./ohmyssh🖱️ Mouse Not Working
# Check terminal mouse support
echo $TERM
# Try different terminal
# - iTerm2 (macOS)
# - Windows Terminal
# - GNOME Terminal
# - Alacritty
# Fallback to keyboard navigation🔨 Build Issues
# Missing go.sum entries error
go mod tidy
# Module download failures
go clean -modcache
go mod download
# Build fails with missing dependencies
go mod tidy
go mod download
make build
# Permission denied on executable
chmod +x ./OhMySSH
# Go version compatibility
go version # Should be 1.19+# 1. 🍴 Fork the repository
# 2. 🌿 Create feature branch
git checkout -b feature/amazing-feature
# 3. ✍️ Make your changes
# 4. ✅ Run tests
make test
# 5. 📤 Push and create PR
git push origin feature/amazing-feature|
🐛 Bug Reports |
✨ New Features |
📚 Documentation |
🎨 UI/UX |
Inspired by lazygit • Built for the SSH community
Made with ❤️ and lots of ☕ for developers everywhere