An open API service indexing awesome lists of open source software.

https://github.com/icanhazstring/sshlink

🚀 One-click SSH connections from your browser to any terminal
https://github.com/icanhazstring/sshlink

Last synced: 11 months ago
JSON representation

🚀 One-click SSH connections from your browser to any terminal

Awesome Lists containing this project

README

          

# sshlink


sshlink logo

**🚀 One-click SSH connections from your browser to any terminal**

[![Go](https://img.shields.io/badge/Go-00ADD8?style=for-the-badge&logo=go&logoColor=white)](https://golang.org/)
[![Cross-Platform](https://img.shields.io/badge/Cross--Platform-4CAF50?style=for-the-badge)](https://github.com/icanhazstring/sshlink)
[![MIT License](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](https://opensource.org/licenses/MIT)

[Installation](#-installation) • [Usage](#-usage) • [Contributing](#-contributing)

---

## 🤔 The Problem

As 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:

- 🔄 **Copy the IP address**
- 🖥️ **Open a terminal manually**
- ⌨️ **Type `ssh user@copied-ip`**
- 🔁 **Repeat this hundreds of times per day**

**What if you could just *click* an IP and instantly be connected via SSH?**

## ✨ The Solution

**sshlink** creates a seamless bridge between your browser and terminal. Turn any IP address on your web dashboards into a one-click SSH connection.

```html

IP: 192.168.1.100

192.168.1.100
```

**Click the link → SSH session opens instantly!**

## 🚀 Features

- **🌍 Cross-Platform** - Works on macOS, (Linux, and Windows - coming soon)
- **🔧 Multiple Terminals** - Supports Terminal, iTerm(2), warp, gnome-terminal (more to come)
- **⚡ Zero Configuration** - Works out of the box
- **📦 Single Binary** - No dependencies, just download and run
- **🔗 Standard Protocol** - Uses `sshlink://` URL scheme

## 📦 Installation

### Quick Install (Recommended)

Download the latest binary for your platform from [Releases](https://github.com/icanhazstring/sshlink/releases):

```bash
# macOS (AMD)
curl -L https://github.com/icanhazstring/sshlink/releases/latest/download/sshlink-darwin-amd64.tar.gz | tar -xz
chmod +x sshlink-darwin-amd64

# macOS (ARM)
curl -L https://github.com/icanhazstring/sshlink/releases/latest/download/sshlink-darwin-arm64.tar.gz | tar -xz
chmod +x sshlink-darwin-arm64

# Linux (AMD)
curl -L https://github.com/icanhazstring/sshlink/releases/latest/download/sshlink-linux-amd64.tar.gz | tar -xz
chmod +x sshlink-linux-amd64

# Linux (ARM)
curl -L https://github.com/icanhazstring/sshlink/releases/latest/download/sshlink-linux-arm64.tar.gz | tar -xz
chmod +x sshlink-linux-arm64

# Windows (coming soon)
# Download sshlink-windows-amd64.exe from releases
```

### Install the Protocol Handler

```bash
# Default terminal
./sshlink -install

# Specific terminal (Terminal, iTerm, Warp, etc.)
./sshlink -install -terminal=iterm

# List supported terminals
./sshlink -list
```

### Package Managers (coming soon)

```bash
# Homebrew (macOS/Linux)
brew install icanhazstring/tap/sshlink
```

## 🎯 Usage

### Basic Usage

Once installed, use `sshlink://` links in any web page:

```html
Connect to localhost
Connect with username
Custom port
```

### For Web Developers

Add sshlink support to your dashboards, monitoring tools, or documentation:

```javascript
// Transform IPs into clickable SSH links
function makeSSHLink(ip, user = '') {
const target = user ? `${user}@${ip}` : ip;
return `${ip}`;
}

// Example: Server monitoring dashboard
servers.forEach(server => {
document.getElementById('server-list').innerHTML +=
`
${server.name}
${makeSSHLink(server.ip, 'admin')}
${server.status}
`;
});
```

## 🎨 Examples

### Kubernetes Dashboard
```html
kubectl-node-1
kubectl-node-2
```

### Docker Swarm Manager
```html
Connect to Swarm Manager
```

### Development Servers
```html
Staging Server
Production
```

## 🗑️ Uninstall

```bash
./sshlink -uninstall
```

## 🤝 Contributing

We welcome contributions! Here's how to get started:

1. **Fork the repository**
2. **Create a feature branch**: `git checkout -b feature/amazing-feature`
3. **Commit your changes**: `git commit -m 'Add amazing feature'`
4. **Push to the branch**: `git push origin feature/amazing-feature`
5. **Open a Pull Request**

### Development Setup

```bash
# Clone the repository
git clone https://github.com/icanhazstring/sshlink.git
cd sshlink

# Build for your platform
go build -o sshlink .

# Test installation
./sshlink -install

# Run tests
go test ./...
```

## 📄 License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## 🙏 Acknowledgments

- Inspired by the daily workflow pain of developers everywhere
- Built with ❤️ using [Go](https://golang.org/)
- Logo created with love for the developer community

---


Made with ❤️ for developers who value efficiency

⭐ **Star this repo if sshlink saves you time!** ⭐