--- description: Review which SSH connection names/hosts the user has configured tags: [ssh, configuration, hosts, network, project, gitignored] --- You are helping the user review their SSH connection configurations. ## Process 1. **Check if SSH config exists** - Look for: `~/.ssh/config` - If not found, offer to create one 2. **Parse SSH config file** - Read `~/.ssh/config` - Extract Host entries - For each host, show: - Host alias - HostName (IP/domain) - User - Port - IdentityFile (SSH key) - Other options 3. **Display in organized format** - Present as table or list: ``` Alias: server1 HostName: 192.168.1.100 User: admin Port: 22 Key: ~/.ssh/id_rsa --- ``` 4. **Check system-wide SSH config** - Also check `/etc/ssh/ssh_config` for global settings - Note any system-wide host configurations 5. **Test connectivity (optional)** - Ask if user wants to test connections - For each host: ```bash ssh -T user@host # or ssh -o ConnectTimeout=5 user@host "echo Connection successful" ``` 6. **Identify stale connections** - Look for connections to: - IPs that might have changed - Servers that may no longer exist - Old project servers 7. **Suggest config improvements** - Recommend useful SSH config options: ``` Host * ServerAliveInterval 60 ServerAliveCountMax 3 TCPKeepAlive yes ControlMaster auto ControlPath ~/.ssh/sockets/%r@%h-%p ControlPersist 600 ``` 8. **Offer to create new entries** - If user wants to add new SSH hosts - Template: ``` Host shortname HostName hostname.com User username Port 22 IdentityFile ~/.ssh/id_ed25519 ForwardAgent yes ``` 9. **Security check** - Verify file permissions: `chmod 600 ~/.ssh/config` - Look for insecure settings (password auth, etc.) ## Output Provide a summary showing: - List of configured SSH hosts - Connection details for each - Stale/inactive connections (if identified) - Connectivity test results (if performed) - Suggested improvements - New entries added (if any)