Skip to content

icanhazstring/sshlink

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

32 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

sshlink

sshlink logo

πŸš€ One-click SSH connections from your browser to any terminal

Go Cross-Platform MIT License

Installation β€’ Usage β€’ 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.

<!-- Before: Copy-paste workflow -->
IP: 192.168.1.100

<!-- After: One-click magic -->
<a href="sshlink://192.168.1.100">192.168.1.100</a>

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:

# 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

# Default terminal
./sshlink -install

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

# List supported terminals
./sshlink -list

Package Managers (coming soon)

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

🎯 Usage

Basic Usage

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

<a href="sshlink://127.0.0.1">Connect to localhost</a>
<a href="sshlink://user@example.com">Connect with username</a>
<a href="sshlink://user@example.com:2222">Custom port</a>

For Web Developers

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

// Transform IPs into clickable SSH links
function makeSSHLink(ip, user = '') {
  const target = user ? `${user}@${ip}` : ip;
  return `<a href="sshlink://${target}">${ip}</a>`;
}

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

🎨 Examples

Kubernetes Dashboard

<a href="sshlink://kubectl-node-1">kubectl-node-1</a>
<a href="sshlink://root@kubectl-node-2">kubectl-node-2</a>

Docker Swarm Manager

<a href="sshlink://swarm-manager">Connect to Swarm Manager</a>

Development Servers

<a href="sshlink://dev@staging.company.com">Staging Server</a>
<a href="sshlink://deploy@prod.company.com:2222">Production</a>

πŸ—‘οΈ Uninstall

./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

# 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 file for details.

πŸ™ Acknowledgments

  • Inspired by the daily workflow pain of developers everywhere
  • Built with ❀️ using Go
  • Logo created with love for the developer community

Made with ❀️ for developers who value efficiency

⭐ Star this repo if sshlink saves you time! ⭐

About

πŸš€ One-click SSH connections from your browser to any terminal

Resources

License

Stars

Watchers

Forks

Packages

No packages published