{"id":48818196,"url":"https://github.com/fjh1997/host-sync","last_synced_at":"2026-05-23T12:04:30.964Z","repository":{"id":351265662,"uuid":"1210242852","full_name":"fjh1997/host-sync","owner":"fjh1997","description":"Securely manage, sync and connect to Linux servers — SSH keys, passwords \u0026 configs encrypted across all devices | 安全管理同步 Linux 服务器 — SSH 密钥、密码和配置加密跨设备同步","archived":false,"fork":false,"pushed_at":"2026-05-05T04:58:15.000Z","size":415,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-05T05:36:38.825Z","etag":null,"topics":["cross-platform","encrypted-sync","linux","native","rust","server-management","ssh","ssh-key-management","ssh-keys"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fjh1997.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2026-04-14T08:12:03.000Z","updated_at":"2026-05-05T04:50:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"a94d471e-bcff-4e4f-9026-63e42f554822","html_url":"https://github.com/fjh1997/host-sync","commit_stats":null,"previous_names":["fjh1997/host-sync"],"tags_count":35,"template":false,"template_full_name":null,"purl":"pkg:github/fjh1997/host-sync","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fjh1997%2Fhost-sync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fjh1997%2Fhost-sync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fjh1997%2Fhost-sync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fjh1997%2Fhost-sync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fjh1997","download_url":"https://codeload.github.com/fjh1997/host-sync/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fjh1997%2Fhost-sync/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33394677,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T04:15:53.637Z","status":"ssl_error","status_checked_at":"2026-05-23T04:15:53.242Z","response_time":53,"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":["cross-platform","encrypted-sync","linux","native","rust","server-management","ssh","ssh-key-management","ssh-keys"],"created_at":"2026-04-14T13:01:13.132Z","updated_at":"2026-05-23T12:04:30.958Z","avatar_url":"https://github.com/fjh1997.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./altstore/icon.png\" alt=\"HostSync\" width=\"88\" /\u003e\n  \u003ch1\u003eHostSync\u003c/h1\u003e\n  \u003cp\u003eSecurely manage, sync and connect to all your Linux servers — SSH keys, passwords \u0026 configs, encrypted across every device.\u003c/p\u003e\n  \u003cp\u003e安全管理、同步和连接你所有的 Linux 服务器 — SSH 密钥、密码和配置，加密存储并在所有设备间同步。\u003c/p\u003e\n\n  \u003cp\u003e\n    \u003cimg alt=\"Rust\" src=\"https://img.shields.io/badge/Rust-Native-orange?style=flat-square\" /\u003e\n    \u003cimg alt=\"Platforms\" src=\"https://img.shields.io/badge/Platform-Windows%20%7C%20Linux%20%7C%20macOS%20%7C%20Android%20%7C%20iOS-1f6feb?style=flat-square\" /\u003e\n    \u003cimg alt=\"Package\" src=\"https://img.shields.io/badge/Package-DMG%20%7C%20ZIP%20%7C%20APK%20%7C%20IPA-2da44e?style=flat-square\" /\u003e\n    \u003cimg alt=\"Size\" src=\"https://img.shields.io/badge/Binary-~5MB%20%7C%20RAM%20~5MB-6f42c1?style=flat-square\" /\u003e\n  \u003c/p\u003e\n\n  \u003cp\u003e\n    \u003ca href=\"https://github.com/fjh1997/host-sync/releases\"\u003eDownload / 下载\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n## Features / 功能\n\n- **SSH Key Management / SSH 密钥管理** — Store SSH private keys (PEM/OpenSSH), IdentityFile paths, and passphrases in one place / 集中存储 SSH 私钥、IdentityFile 路径和密钥口令\n- **Encrypted Key Sync / 加密密钥同步** — AES-256-GCM encrypted (Argon2 key derivation) before syncing. Private keys never leave your devices in plaintext / AES-256-GCM 加密（Argon2 密钥派生），私钥永远不会以明文离开你的设备\n- **Cross-Device Sync / 跨设备同步** — Encrypted credentials synced through a private GitHub Gist. Add a server on your PC, connect from your phone / 加密凭据通过私有 Gist 同步，电脑上添加，手机上即可连接\n- **SSH Config Compatible / SSH Config 兼容** — Import/export `~/.ssh/config`, IdentityFile paths preserved / 从 `~/.ssh/config` 导入导出，IdentityFile 路径完整保留\n- **GitHub OAuth Login / GitHub OAuth 登录** — Device Flow, no server needed, no secret in binary / Device Flow 登录，无需后端服务器，无 secret 泄露\n- **Desktop: Native Terminal / 桌面端：原生终端** — Opens system terminal with `ssh -F` referencing your keys / 调用系统终端连接\n- **Mobile: Built-in SSH / 移动端：内置 SSH** — Connect with stored keys directly from Android/iOS / 在 Android/iOS 上直接使用已存储的密钥连接\n- **Truly Native / 真正原生** — No Electron, no WebView, no Flutter, no VM. Pure compiled Rust / 无 Electron、无 WebView、无 Flutter、无虚拟机\n\n## Why HostSync? / 为什么用 HostSync？\n\nManaging SSH keys across multiple machines is painful:\n\n跨设备管理 SSH 密钥很麻烦：\n\n- Keys scattered across `~/.ssh/` on different devices / 密钥散落在不同设备的 `~/.ssh/` 目录\n- Copying private keys via insecure channels (email, chat, USB) / 通过不安全的渠道复制私钥\n- Forgetting which key authenticates to which server / 忘记哪把密钥对应哪台服务器\n- No way to access your servers from your phone / 手机上无法访问你的服务器\n\nHostSync solves this: **one encrypted vault** for all your SSH keys, passwords, and server configs — synced securely across every device you own.\n\nHostSync 解决这些问题：**一个加密保险库**存放所有 SSH 密钥、密码和服务器配置 — 在你的所有设备间安全同步。\n\n## Security Model / 安全模型\n\n```\nYour SSH keys \u0026 passwords\n        ↓\nAES-256-GCM encrypt (Argon2 derived key)\n        ↓\nEncrypted blob stored locally\n        ↓ (sync)\nPrivate GitHub Gist (still encrypted)\n        ↓ (other device)\nAES-256-GCM decrypt (same key)\n        ↓\nYour SSH keys \u0026 passwords\n```\n\n- Keys are encrypted at rest and in transit / 密钥在存储和传输中均加密\n- GitHub never sees your plaintext keys / GitHub 永远看不到你的明文密钥\n- Encryption key is generated locally and never uploaded / 加密密钥在本地生成，永不上传\n\n## Installation / 安装\n\nDownload from [Releases](https://github.com/fjh1997/host-sync/releases):\n\n从 [Releases](https://github.com/fjh1997/host-sync/releases) 下载：\n\n| Platform / 平台 | x86_64 | ARM64 |\n|----------|--------|-------|\n| Windows  | `hostsync-windows-x64.zip` | `hostsync-windows-arm64.zip` |\n| Linux    | `hostsync-linux-x64.tar.gz` | `hostsync-linux-arm64.tar.gz` |\n| macOS    | `HostSync-macos-x64.dmg` | `HostSync-macos-arm64.dmg` |\n| Android  | `HostSync.apk` (all ABIs) | |\n| iOS      | AltStore (see below) | |\n\n### Windows\n\nBuild the desktop app and create a Start menu shortcut for the current user:\n\n构建桌面端并为当前用户创建开始菜单快捷方式：\n\n```powershell\ncargo build --release -p hostsync-desktop\npowershell -ExecutionPolicy Bypass -File scripts\\install-windows-start-menu.ps1\n```\n\nAfter this, searching `hostsync` or `HostSync` in the Start menu launches the app.\n\n完成后，在开始菜单搜索 `hostsync` 或 `HostSync` 即可启动应用。\n\nTo build a Windows installer that installs to `C:\\Program Files\\HostSync` and creates\nthe Start menu entry:\n\n构建会安装到 `C:\\Program Files\\HostSync` 并创建开始菜单入口的 Windows 安装器：\n\n```powershell\ncargo install cargo-packager --locked\ncargo build --release -p hostsync-desktop\ncargo packager -f nsis --release\n```\n\nRun the generated installer as Administrator for the same per-machine behavior as\napps installed under `Program Files`.\n\n以管理员身份运行生成的安装器，即可获得和安装到 `Program Files` 的应用一致的全局安装行为。\n\n### macOS\n\nDownload the `.dmg`, open it, drag **HostSync** to **Applications**.\n\n下载 `.dmg`，打开后将 HostSync 拖入 Applications 即可。\n\n\u003e First launch: right-click → Open to bypass Gatekeeper / 首次启动：右键 → 打开 以绕过 Gatekeeper\n\n### iOS (AltStore)\n\n1. Install [AltStore](https://altstore.io/) on your iOS device / 在 iOS 设备上安装 AltStore\n2. Open AltStore → **Browse** → **Sources** → tap **+** / 打开 AltStore → 浏览 → 源 → 点击 +\n3. Add source URL / 添加源地址：\n   ```\n   https://fjh1997.github.io/host-sync/source.json\n   ```\n4. Find **HostSync** and install / 在源中找到 HostSync 并安装\n\n## SSH Key Management / SSH 密钥管理\n\nHostSync supports two ways to store SSH keys per server:\n\nHostSync 支持两种方式存储每台服务器的 SSH 密钥：\n\n| Method / 方式 | Field / 字段 | Use case / 使用场景 |\n|---|---|---|\n| **IdentityFile path** | `~/.ssh/id_rsa` | Desktop — references key file on disk / 桌面端引用磁盘上的密钥文件 |\n| **Inline private key** | PEM content in vault | Mobile \u0026 cross-device — encrypted and synced / 移动端跨设备加密同步 |\n\nBoth can be set simultaneously: desktop uses the file path, mobile uses the inline key.\n\n两者可以同时设置：桌面端使用文件路径，移动端使用内联密钥。\n\n## SSH Config Compatibility / SSH Config 兼容性\n\nImport from `~/.ssh/config` or paste config text. Export generates valid OpenSSH config:\n\n支持从 `~/.ssh/config` 导入或粘贴配置文本。导出生成标准 OpenSSH 配置：\n\n```ssh-config\n#@HostSync-Id a1b2c3d4-...\n#@HostSync-AuthType key\nHost prod-web\n    HostName 10.0.1.50\n    Port 2222\n    User deploy\n    IdentityFile ~/.ssh/prod_key\n```\n\n## Architecture / 架构\n\n```\nhost-sync/\n├── crates/\n│   ├── hostsync-core/        # Rust core (crypto, SSH config, storage, OAuth, sync)\n│   │                         # → .dll/.so/.dylib (desktop), .so (Android JNI), .a (iOS FFI)\n│   └── hostsync-desktop/     # iced GUI → native Win/Linux/Mac binary\n├── mobile/\n│   ├── android/              # Kotlin + Jetpack Compose + JNI → Rust .so\n│   └── ios/                  # Swift + SwiftUI + C FFI → Rust .a\n└── .github/workflows/       # CI/CD\n```\n\n## Build from Source / 从源码构建\n\n```bash\n# Desktop (current platform)\ncargo build --release -p hostsync-desktop\n\n# Android shared library\ncargo ndk -t arm64-v8a build --release -p hostsync-core\n\n# iOS static library\ncargo build --release --target aarch64-apple-ios -p hostsync-core\n```\n\n## CI/CD\n\n| Trigger | Action |\n|---------|--------|\n| Push to `main` / PR | test + clippy + build all platforms → **pre-release** |\n| Push `v*` tag | test + build → formal **Release** + update AltStore source.json |\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=fjh1997%2Fhost-sync\u0026type=Date)](https://www.star-history.com/#fjh1997/host-sync\u0026Date)\n\n---\n\n## Claude-Assisted Development / Claude 辅助开发\n\nThis project was developed with **Claude** (Anthropic) using **Claude Code** CLI.\n\n本项目由 **Claude**（Anthropic）通过 **Claude Code** CLI 辅助开发。\n\n\u003cdetails\u003e\n\u003csummary\u003eAll Prompts Used / 使用的所有提示词\u003c/summary\u003e\n\n#### Prompt 1 — Initial project creation / 初始项目创建\n```\n开发一个图形化软件，支持windows，linux，mac，安卓，ios，使用github oauth登录即可，\n能够添加管理并同步你的所有的linux服务器的的域名，密码，密钥。点击连接电脑端不是使用\n内置终端，而是调用系统原生终端进行连接。安卓端与ios端则可以使用内置shell界面连接，\n使用任何语言都可以，要求体积足够小，内存占用足够轻量化。\n```\n\n#### Prompt 2 — SSH config compatibility / SSH 配置兼容\n```\n配置文件要与 SSH config 文件格式兼容\n```\n\n#### Prompt 3 — CI/CD, AltStore, README\n```\n帮我推送到github，要求每次commit或者pr，以及加v的tag的release都要触发github action\n构建测试，commit的构建需要推送到pre-release，加vtag的release推送到正式release，\nreadme里面要写上claude辅助开发以及本次涉及到的所有提示词。ios要支持altstore安装\n```\n\n#### Prompt 4 — Rust rewrite / Rust 重写\n```\n帮我重构下，要求能够跨平台，但是全是原生程序\n```\n\n\u003e Claude initially proposed Go; user asked \"为什么用go不用rust？\", Claude agreed Rust is better for the size/memory requirements.\n\n#### Prompt 5 — Bilingual README / 中英双语 README\n```\nreadme里面要有中文翻译，About里面也要\n```\n\n#### Prompt 6 — Emphasize SSH key management / 强调 SSH 密钥管理\n```\n在readme和about里面重点强调一下ssh key的管理和同步\n```\n\n#### Prompt 7 — Dual architecture support / 双架构支持\n```\n所有端要同时支持x86和arm架构\n```\n\n\u003c/details\u003e\n\n## License / 许可证\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffjh1997%2Fhost-sync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffjh1997%2Fhost-sync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffjh1997%2Fhost-sync/lists"}