A simple CLI tool to quickly SSH into (or hop to) configured client environments with interactive selection.
- Interactive selection, adding, and updating of clients and environments via
fzf
andgum
- Supports multiple environments per client (e.g., Staging, Production)
- Reads client/server data from an easy to maintain JSON config file
- Easily configurable and extensible
- Easy Homebrew installation for Mac users
There are several ways to install SSHop.
You can install sshop via Homebrew from the custom tap:
brew tap skullsneeze/homebrew-tap https://github.com/Skullsneeze/homebrew-tools.git
And then:
brew install sshop
Alternativly you can use the provided install script:
curl -sSfL https://raw.githubusercontent.com/Skullsneeze/sshop/master/install.sh | bash
Simply run:
sshop
This will prompt you to select a client and then an environment to SSH into.
Options:
--add, -a Add new client via interactive prompts
--edit, -e Edit existing client via fzf + interactive prompts
--delete, -d Delete existing client via fzf + interactive prompts
--config, -c <file> Use a specific clients.json config file
--help, -h Show this help message
By default, sshop
reads the configuration file from:
~/.sshop/clients.json
You can override this by setting the JUMP_CONFIG
environment variable or using the --config
option:
sshop --config /path/to/your/clients.json
Clients are managed in a json file using the following structure:
{
"clients": [
{
"name": "Example Client",
"servers": [
{
"name": "Production",
"host": "prod.example.com",
"port": 22,
"username": "ubuntu"
}
]
},
{
"name": "Another Client",
"servers": [
{
"name": "Test",
"host": "test.sample.com",
"port": 1234,
"username": "test_sample"
},
{
"name": "Production",
"host": "sample.com",
"port": 2222,
"username": "root"
}
]
}
]
}
fzf
(for interactive selection)jq
(for processing json clients/server list)gum
(for nice looking inputs)
Note that both Homebrew and install.sh will try to install these requirement for you.
Add servers to SSHop interactively:
Edit servers in SSHop interactively:
Remove servers from SSHop interactively: