{"id":29605473,"url":"https://github.com/icanhazstring/sshlink","last_synced_at":"2025-07-20T16:05:35.232Z","repository":{"id":298874672,"uuid":"1001334647","full_name":"icanhazstring/sshlink","owner":"icanhazstring","description":"🚀 One-click SSH connections from your browser to any terminal","archived":false,"fork":false,"pushed_at":"2025-06-23T17:52:01.000Z","size":70,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-18T12:12:26.726Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","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/icanhazstring.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}},"created_at":"2025-06-13T07:51:02.000Z","updated_at":"2025-07-11T15:05:54.000Z","dependencies_parsed_at":"2025-06-13T11:38:07.810Z","dependency_job_id":null,"html_url":"https://github.com/icanhazstring/sshlink","commit_stats":null,"previous_names":["icanhazstring/sshlink"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/icanhazstring/sshlink","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icanhazstring%2Fsshlink","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icanhazstring%2Fsshlink/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icanhazstring%2Fsshlink/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icanhazstring%2Fsshlink/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/icanhazstring","download_url":"https://codeload.github.com/icanhazstring/sshlink/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icanhazstring%2Fsshlink/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266152459,"owners_count":23884512,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2025-07-20T16:05:33.545Z","updated_at":"2025-07-20T16:05:35.225Z","avatar_url":"https://github.com/icanhazstring.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sshlink\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"logo.svg\" alt=\"sshlink logo\" width=\"200\" height=\"200\"\u003e\n  \n  **🚀 One-click SSH connections from your browser to any terminal**\n  \n  [![Go](https://img.shields.io/badge/Go-00ADD8?style=for-the-badge\u0026logo=go\u0026logoColor=white)](https://golang.org/)\n  [![Cross-Platform](https://img.shields.io/badge/Cross--Platform-4CAF50?style=for-the-badge)](https://github.com/icanhazstring/sshlink)\n  [![MIT License](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](https://opensource.org/licenses/MIT)\n  \n  [Installation](#-installation) • [Usage](#-usage) • [Contributing](#-contributing)\n\u003c/div\u003e\n\n---\n\n## 🤔 The Problem\n\nAs developers, we constantly switch between web dashboards, monitoring tools, and documentation that display server IPs. Every time we need to SSH into a server, we have to:\n\n- 🔄 **Copy the IP address**\n- 🖥️ **Open a terminal manually**  \n- ⌨️ **Type `ssh user@copied-ip`**\n- 🔁 **Repeat this hundreds of times per day**\n\n**What if you could just *click* an IP and instantly be connected via SSH?**\n\n## ✨ The Solution\n\n**sshlink** creates a seamless bridge between your browser and terminal. Turn any IP address on your web dashboards into a one-click SSH connection.\n\n```html\n\u003c!-- Before: Copy-paste workflow --\u003e\nIP: 192.168.1.100\n\n\u003c!-- After: One-click magic --\u003e\n\u003ca href=\"sshlink://192.168.1.100\"\u003e192.168.1.100\u003c/a\u003e\n```\n\n**Click the link → SSH session opens instantly!**\n\n## 🚀 Features\n\n- **🌍 Cross-Platform** - Works on macOS, (Linux, and Windows - coming soon)\n- **🔧 Multiple Terminals** - Supports Terminal, iTerm(2), warp, gnome-terminal (more to come)\n- **⚡ Zero Configuration** - Works out of the box\n- **📦 Single Binary** - No dependencies, just download and run\n- **🔗 Standard Protocol** - Uses `sshlink://` URL scheme\n\n## 📦 Installation\n\n### Quick Install (Recommended)\n\nDownload the latest binary for your platform from [Releases](https://github.com/icanhazstring/sshlink/releases):\n\n```bash\n# macOS (AMD)\ncurl -L https://github.com/icanhazstring/sshlink/releases/latest/download/sshlink-darwin-amd64.tar.gz | tar -xz\nchmod +x sshlink-darwin-amd64\n\n# macOS (ARM)\ncurl -L https://github.com/icanhazstring/sshlink/releases/latest/download/sshlink-darwin-arm64.tar.gz | tar -xz\nchmod +x sshlink-darwin-arm64\n\n# Linux (AMD)\ncurl -L https://github.com/icanhazstring/sshlink/releases/latest/download/sshlink-linux-amd64.tar.gz | tar -xz\nchmod +x sshlink-linux-amd64\n\n# Linux (ARM)\ncurl -L https://github.com/icanhazstring/sshlink/releases/latest/download/sshlink-linux-arm64.tar.gz | tar -xz\nchmod +x sshlink-linux-arm64\n\n# Windows (coming soon)\n# Download sshlink-windows-amd64.exe from releases\n```\n\n### Install the Protocol Handler\n\n```bash\n# Default terminal\n./sshlink -install\n\n# Specific terminal (Terminal, iTerm, Warp, etc.)\n./sshlink -install -terminal=iterm\n\n# List supported terminals\n./sshlink -list\n```\n\n### Package Managers (coming soon)\n\n```bash\n# Homebrew (macOS/Linux)\nbrew install icanhazstring/tap/sshlink\n```\n\n## 🎯 Usage\n\n### Basic Usage\n\nOnce installed, use `sshlink://` links in any web page:\n\n```html\n\u003ca href=\"sshlink://127.0.0.1\"\u003eConnect to localhost\u003c/a\u003e\n\u003ca href=\"sshlink://user@example.com\"\u003eConnect with username\u003c/a\u003e\n\u003ca href=\"sshlink://user@example.com:2222\"\u003eCustom port\u003c/a\u003e\n```\n\n### For Web Developers\n\nAdd sshlink support to your dashboards, monitoring tools, or documentation:\n\n```javascript\n// Transform IPs into clickable SSH links\nfunction makeSSHLink(ip, user = '') {\n  const target = user ? `${user}@${ip}` : ip;\n  return `\u003ca href=\"sshlink://${target}\"\u003e${ip}\u003c/a\u003e`;\n}\n\n// Example: Server monitoring dashboard\nservers.forEach(server =\u003e {\n  document.getElementById('server-list').innerHTML += \n    `\u003ctr\u003e\n      \u003ctd\u003e${server.name}\u003c/td\u003e\n      \u003ctd\u003e${makeSSHLink(server.ip, 'admin')}\u003c/td\u003e\n      \u003ctd\u003e${server.status}\u003c/td\u003e\n    \u003c/tr\u003e`;\n});\n```\n\n## 🎨 Examples\n\n### Kubernetes Dashboard\n```html\n\u003ca href=\"sshlink://kubectl-node-1\"\u003ekubectl-node-1\u003c/a\u003e\n\u003ca href=\"sshlink://root@kubectl-node-2\"\u003ekubectl-node-2\u003c/a\u003e\n```\n\n### Docker Swarm Manager\n```html\n\u003ca href=\"sshlink://swarm-manager\"\u003eConnect to Swarm Manager\u003c/a\u003e\n```\n\n### Development Servers\n```html\n\u003ca href=\"sshlink://dev@staging.company.com\"\u003eStaging Server\u003c/a\u003e\n\u003ca href=\"sshlink://deploy@prod.company.com:2222\"\u003eProduction\u003c/a\u003e\n```\n\n## 🗑️ Uninstall\n\n```bash\n./sshlink -uninstall\n```\n\n## 🤝 Contributing\n\nWe welcome contributions! Here's how to get started:\n\n1. **Fork the repository**\n2. **Create a feature branch**: `git checkout -b feature/amazing-feature`\n3. **Commit your changes**: `git commit -m 'Add amazing feature'`\n4. **Push to the branch**: `git push origin feature/amazing-feature`\n5. **Open a Pull Request**\n\n### Development Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/icanhazstring/sshlink.git\ncd sshlink\n\n# Build for your platform\ngo build -o sshlink .\n\n# Test installation\n./sshlink -install\n\n# Run tests\ngo test ./...\n```\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\n- Inspired by the daily workflow pain of developers everywhere\n- Built with ❤️ using [Go](https://golang.org/)\n- Logo created with love for the developer community\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003cstrong\u003eMade with ❤️ for developers who value efficiency\u003c/strong\u003e\n  \n  ⭐ **Star this repo if sshlink saves you time!** ⭐\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficanhazstring%2Fsshlink","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ficanhazstring%2Fsshlink","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficanhazstring%2Fsshlink/lists"}