{"id":48440245,"url":"https://github.com/guyfar/nook-ssh","last_synced_at":"2026-04-06T15:04:10.122Z","repository":{"id":337244904,"uuid":"1152825858","full_name":"guyfar/nook-ssh","owner":"guyfar","description":"SSH jumpbox for humans. A lightweight terminal SSH bookmark manager with fzf,grouping, key setup, and diagnostics.","archived":false,"fork":false,"pushed_at":"2026-03-22T13:30:23.000Z","size":39,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-23T05:03:01.371Z","etag":null,"topics":["bash","cli","server-management","ssh","ssh-client","terminal","tui"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/guyfar.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","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":"2026-02-08T13:53:31.000Z","updated_at":"2026-03-22T13:31:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/guyfar/nook-ssh","commit_stats":null,"previous_names":["guyfar/ssh-manager","guyfar/nook-ssh"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/guyfar/nook-ssh","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyfar%2Fnook-ssh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyfar%2Fnook-ssh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyfar%2Fnook-ssh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyfar%2Fnook-ssh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/guyfar","download_url":"https://codeload.github.com/guyfar/nook-ssh/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyfar%2Fnook-ssh/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31477014,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T14:34:32.243Z","status":"ssl_error","status_checked_at":"2026-04-06T14:34:31.723Z","response_time":112,"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":["bash","cli","server-management","ssh","ssh-client","terminal","tui"],"created_at":"2026-04-06T15:03:37.138Z","updated_at":"2026-04-06T15:04:10.104Z","avatar_url":"https://github.com/guyfar.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nook (`nk`)\n\n[中文](./README.zh-CN.md)\n\n\u003e SSH jumpbox for humans.\n\nNook is a polished SSH bookmark manager for people who spend real time in the terminal. It keeps server access fast and organized without turning your workflow into a heavyweight dashboard.\n\nYou get a branded picker, recent-server pinning, grouped entries, key setup, reachability checks, diagnostics, and a clean migration path from the original `ssh-manager` layout.\n\n中文说明见 `README.zh-CN.md`.\n\n## Why Nook\n\n- Clean primary command: `nk`\n- Single-file Bash implementation with minimal operational overhead\n- Fast interactive picker powered by `fzf`\n- Server catalog with groups, notes, and recent-history pinning\n- Built-in key setup, reachability checks, and diagnostics\n- Automatic migration from `~/.ssh-manager` to `~/.config/nook`\n\n## Quick Start\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/guyfar/nook-ssh/main/install.sh | bash\nnk add\nnk\n```\n\nBy default Nook stores data in:\n\n```text\n~/.config/nook/\n```\n\nIf an existing `~/.ssh-manager/` config is present, Nook imports it automatically.\n\n## Experience\n\nNook is designed to feel like a proper terminal product, not just a helper script:\n\n- Branded TUI with preview pane and keyboard-first flow\n- Recent servers stay pinned at the top of the picker\n- Password and key-based authentication handled in one place\n- Config stays human-readable and easy to version or back up\n\n## Commands\n\n| Command | Description |\n|------|------|\n| `nk` | Open the interactive picker |\n| `nk add` | Add a server |\n| `nk rm` | Remove a server |\n| `nk list` | List all configured servers |\n| `nk edit` | Edit the config file |\n| `nk key` | Configure SSH key login |\n| `nk ping` | Check server reachability |\n| `nk doctor` | Show environment diagnostics |\n| `nk \u003ckeyword\u003e` | Search and connect directly |\n| `nk version` | Show version |\n| `nk help` | Show help |\n\n## Configuration\n\nDefault config file:\n\n```text\n~/.config/nook/servers.conf\n```\n\nOptional override:\n\n```bash\nexport NOOK_CONFIG_DIR=/path/to/custom-config-dir\n```\n\nConfig format:\n\n```conf\n# Format : name | host | port | user | password(optional) | description\n\n[production]\n# prod-web-01 | 1.2.3.4 | 22   | root | yourpass  | production web node\n# prod-web-02 | 1.2.3.5 | 22   | root |           | production web node 2\n# prod-db-01  | 1.2.3.6 | 3306 | root | dbpass123 | primary database\n```\n\nEmpty password means Nook will use SSH key login.\n\n## SSH Key Setup\n\n```bash\nnk key\n```\n\nNook detects an existing SSH public key automatically. If none exists, it generates an `ed25519` key and pushes it with `ssh-copy-id`.\n\n## Dependencies\n\n- `bash` 4.0+\n- `fzf` optional, recommended\n- `sshpass` optional, only needed for password-based login\n\n```bash\n# macOS\nbrew install fzf\n\n# Debian / Ubuntu\nsudo apt install fzf\n\n# CentOS / RHEL\nsudo yum install fzf\n```\n\n## Diagnostics\n\n```bash\nnk doctor\n```\n\nUse `nk doctor` when installation or connection reports need to be debugged. It prints version, config paths, server count, and dependency availability for `ssh`, `fzf`, and `sshpass`.\n\n## Development\n\n```bash\n# syntax check\nbash -n nk install.sh\n\n# help\n./nk help\n\n# local install into temp directories\nNOOK_INSTALL_DIR=/tmp/nook-bin XDG_CONFIG_HOME=/tmp/nook-xdg bash ./install.sh\n```\n\nProject workflow details live in `CONTRIBUTING.md`, `CHANGELOG.md`, and `RELEASE_CHECKLIST.md`.\n\n## Uninstall\n\n```bash\nsudo rm /usr/local/bin/nk\nrm -rf ~/.config/nook\nrm -rf ~/.ssh-manager\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguyfar%2Fnook-ssh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguyfar%2Fnook-ssh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguyfar%2Fnook-ssh/lists"}