{"id":36732296,"url":"https://github.com/masahide/omnisshagent","last_synced_at":"2026-01-25T06:01:58.149Z","repository":{"id":36990112,"uuid":"455754019","full_name":"masahide/OmniSSHAgent","owner":"masahide","description":"Integrated ssh-agent for windows. (pageant compatible. openSSH ssh-agent etc ..)","archived":false,"fork":false,"pushed_at":"2026-01-24T12:40:54.000Z","size":12681,"stargazers_count":156,"open_issues_count":9,"forks_count":10,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-01-24T19:57:32.644Z","etag":null,"topics":["1password","golang","pageant","putty","ssh","ssh-agent","ssh-key","wails","wsl","wsl2"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/masahide.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":"2022-02-05T02:19:11.000Z","updated_at":"2026-01-24T12:36:13.000Z","dependencies_parsed_at":"2024-01-07T13:27:27.443Z","dependency_job_id":"e0ca8ca0-f863-4762-bf82-28ec7c595de7","html_url":"https://github.com/masahide/OmniSSHAgent","commit_stats":null,"previous_names":["masahide/ssh-agent-win"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/masahide/OmniSSHAgent","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masahide%2FOmniSSHAgent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masahide%2FOmniSSHAgent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masahide%2FOmniSSHAgent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masahide%2FOmniSSHAgent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/masahide","download_url":"https://codeload.github.com/masahide/OmniSSHAgent/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masahide%2FOmniSSHAgent/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28745836,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T05:12:38.112Z","status":"ssl_error","status_checked_at":"2026-01-25T05:04:50.338Z","response_time":113,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["1password","golang","pageant","putty","ssh","ssh-agent","ssh-key","wails","wsl","wsl2"],"created_at":"2026-01-12T12:14:24.119Z","updated_at":"2026-01-25T06:01:58.137Z","avatar_url":"https://github.com/masahide.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OmniSSHAgent\n\n![OmniSSHAgent Fixed](https://github.com/robertt-smg/OmniSSHAgent/blob/main/build/appicon.png?raw=true)\n\n## About\n\nUnifies the chaotic ssh-agent state under Windows.\n\noriginal work by: [masahide](https://github.com/masahide/OmniSSHAgent)\n\nI only fixed a dead lock issue ...\n\n### The Chaotic State of SSH-Agent on Windows\n\nOn Windows, there are multiple communication methods for SSH agents, leading to complexity in usage and configuration. The following diagram illustrates the current SSH agent communication landscape on Windows.\n![windows-ssh-agent-chaosmap](https://github.com/robertt-smg/OmniSSHAgent/blob/main/doc/windows-ssh-agent-chaosmap.png?raw=true)\n\n### OmniSSHAgent Connection Diagram\n\nOmniSSHAgent simplifies this chaotic situation, as shown in the diagram below.\n![OmniSSHAgentmap](https://github.com/robertt-smg/OmniSSHAgent/blob/main/doc/OmniSSHAgent.png?raw=true)\n\n## System Requirements\n\n- Windows 11\n- [Microsoft Edge WebView2](https://developer.microsoft.com/en-us/microsoft-edge/webview2/)\n\n## Supported Interfaces\n\n- Pageant.exe (PuTTY) shared memory\n- Unix domain socket for WSL2\n- NamedPipe on Windows\n- Unix domain socket for WSL1\n- Unix domain socket for MSYS2 (Cygwin) ([#1](https://github.com/robertt-smg/OmniSSHAgent/issues/1))\n\n## Usage\n\n1. Download `OmniSSHAgent-amd64-installer.exe` from [the latest release](https://github.com/robertt-smg/OmniSSHAgent/releases/latest), and run the installer.\n2. If you are using the native Windows SSH agent, you will need to stop and disable it. Open PowerShell with administrator privileges and run the following commands:\n\n```powershell\nStop-Service ssh-agent\nSet-Service -StartupType Disabled ssh-agent\n```\n\n- Alternatively, you can do this through the GUI: open the Start menu, type \"Services,\" and select the Services app.\n  Once open, find the `OpenSSH Authentication Agent` service, set `Service Status` to `Stop`, and `Startup Type` to `Disabled`.\n\n3. If you are using [PuTTY Pageant](https://www.chiark.greenend.org.uk/~sgtatham/putty/index.html), stop it.\n\n4. Launch `OmniSSHAgent.exe` by double-clicking it.\n5. Press the `Open new file` button to add a private key file, or use the `ssh-add` command or [KeePassXC](https://keepassxc.org/) to add your private key.\n\n### Registering for Startup\n\nOmniSSHAgent does not have an installer to register itself for startup automatically. To add it manually:\n\n- Press the Windows logo key + R, type `shell:startup`, and click OK. This opens the Startup folder.\n- Copy and paste a shortcut to `OmniSSHAgent.exe` into the Startup folder.\n\n### Using with WSL2\n\n#### Setting up wsl2-ssh-agent-proxy in Ubuntu or Rocky (WSL2)\n\nChoose the instructions for your preferred shell below. If your shell is not listed, you can convert the Bash script syntax and submit a pull request to add it to the repository.\n\n##### Bash (and all POSIX-compliant shells)\n\n1. Download [ubuntu.wsl2-ssh-agent-proxy.sh](hack/ubuntu.wsl2-ssh-agent-proxy.sh) using the following command:\n\n```bash\nmkdir -p $HOME/wsl2-ssh-agent-proxy\ncurl -sL https://raw.githubusercontent.com/robertt-smg/OmniSSHAgent/refs/heads/main/hack/ubuntu.wsl2-ssh-agent-proxy.sh -o $HOME/wsl2-ssh-agent-proxy/ubuntu.wsl2-ssh-agent-proxy.sh\n```\n\n2. Add the following line to `~/.bashrc`, `~/.zshrc`, or the appropriate file for your shell:\n\n```bash\nsource $HOME/wsl2-ssh-agent-proxy/ubuntu.wsl2-ssh-agent-proxy.sh\n```\n\n##### Fish\n\n1. Download [ubuntu.wsl2-ssh-agent-proxy.fish](hack/ubuntu.wsl2-ssh-agent-proxy.fish) using the following command:\n\n```fish\nmkdir -p $HOME/wsl2-ssh-agent-proxy\ncurl -sL https://raw.githubusercontent.com/robertt-smg/OmniSSHAgent/refs/heads/main/hack/ubuntu.wsl2-ssh-agent-proxy.fish -o $HOME/wsl2-ssh-agent-proxy/ubuntu.wsl2-ssh-agent-proxy.fish\n```\n\n2. Add the following line to `~/.config/fish/config.fish`:\n\n```fish\n. $HOME/wsl2-ssh-agent-proxy/ubuntu.wsl2-ssh-agent-proxy.fish\n```\n\n### Using with WSL1\n\nSetting up a Unix domain socket in the Ubuntu environment:\n\n1. Check the setting for `Unix domain socket file path (WSL1)` in OmniSSHAgent.\n   For example, if the path is set as follows (`UserName` will vary based on your environment):\n   `C:\\Users\\\u003cUserName\u003e\\OmniSSHAgent.sock`\n   The WSL1 path would be `/mnt/c/Users/\u003cUserName\u003e/OmniSSHAgent.sock`.\n\n2. Add the following line to `~/.bashrc`:\n\n```bash\nexport SSH_AUTH_SOCK=/mnt/c/Users/\u003cUserName\u003e/OmniSSHAgent.sock\n```\n\n### Using with Cygwin/MSYS2/Git for Windows (Git Bash)\n\n1. Check the setting for `Cygwin Unix domain socket file path (MSYS2)` in OmniSSHAgent.\n   - For example, if the path is (`UserName` will vary based on your environment):\n   - `C:\\Users\\\u003cUserName\u003e\\OmniSSHCygwin.sock`\n   - The Cygwin path would be `/mnt/c/Users/\u003cUserName\u003e/OmniSSHCygwin.sock`.\n\n2. To set the `SSH_AUTH_SOCK` variable:\n   - On the Windows taskbar, right-click the Windows icon and select System.\n   - In the Settings window, under Related Settings, click Advanced system settings.\n   - On the Advanced tab, click Environment Variables.\n   - In `User variables`, click `New` to create a new environment variable:\n\n```\nVariable name:  SSH_AUTH_SOCK\nVariable value: /mnt/c/Users/\u003cUserName\u003e/OmniSSHAgent.sock\n```\n\n## Using with OpenSSH ssh-agent NamedPipe (also compatible with 1Password) in Proxy Mode\n\nThis mode uses the [OpenSSH ssh-agent NamedPipe](https://learn.microsoft.com/windows-server/administration/openssh/openssh_keymanagement) as a backend. It can also be used with [1Password’s ssh-agent function](https://developer.1password.com/docs/ssh/agent/), as shown in the diagram below.  \n![NamedPipe-Proxy-mode](https://github.com/robertt-smg/OmniSSHAgent/blob/main/doc/NamedPipeProxyMode.png?raw=true)\n\nBy enabling **\"Proxy mode for OpenSSH agent (also compatible with 1Password)\"** in the configuration, OmniSSHAgent functions as a proxy for Windows OpenSSH's NamedPipe SSH agent.  \nThis mode also works with the 1Password key-agent.\n\n**Note:** When \"Proxy mode for OpenSSH agent (also compatible with 1Password)\" is enabled, OmniSSHAgent operates solely as a proxy, and private keys cannot be added directly to it.\n\n## Supported Key File Formats\n\n- PuTTY private key file (.ppk)\n- OpenSSH format\n\n## Supported Key Types\n\n- RSA\n- ECDSA\n- ED25519\n\n(DSA, ECDSA-SK, ED25519-SK are not supported)\n\n## FAQ\n\n### Where is the passphrase for the private key stored?\n\nPassphrases are stored in the [Windows Credential Manager](https://support.microsoft.com/en-us/windows/accessing-credential-manager-1b5c916a-6a16-889f-8581-fc16e8165ac0).\n\n## Graceful shutdown\n\nWhen you quit the app, OmniSSHAgent now cancels every agent listener through a `context.Context`, closes the related sockets, and waits for the goroutines to finish. This prevents the old situation where `Quit` would hang because listeners were still blocking on `Accept`/`GetMessage`.\n\n## Screenshots\n\n\u003cimg src=\"https://github.com/robertt-smg/OmniSSHAgent/blob/main/doc/screen.png?raw=true\" width=\"500\"\u003e\n\u003cimg src=\"https://github.com/robertt-smg/OmniSSHAgent/blob/main/doc/screen-setup.png?raw=true\" width=\"500\"\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmasahide%2Fomnisshagent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmasahide%2Fomnisshagent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmasahide%2Fomnisshagent/lists"}