Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/beliven-it/hssh
A CLI to easily list, search and connect to SSH hosts. Sync down hosts from providers in order to get a centralized hosts configuration.
https://github.com/beliven-it/hssh
cli fzf github gitlab hssh ssh-hosts sync
Last synced: 27 days ago
JSON representation
A CLI to easily list, search and connect to SSH hosts. Sync down hosts from providers in order to get a centralized hosts configuration.
- Host: GitHub
- URL: https://github.com/beliven-it/hssh
- Owner: beliven-it
- License: mit
- Created: 2021-01-16T00:30:12.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2024-07-11T20:17:42.000Z (6 months ago)
- Last Synced: 2024-07-11T23:02:19.149Z (6 months ago)
- Topics: cli, fzf, github, gitlab, hssh, ssh-hosts, sync
- Language: Go
- Homepage:
- Size: 275 KB
- Stars: 2
- Watchers: 5
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
A CLI to easily list, search and connect to SSH hosts. Sync down hosts from providers in order to get a centralized hosts configuration.
## Install
Add Homebrew Beliven tap with:
```bash
brew tap beliven-it/tap
```Then install `hssh` CLI with:
```bash
brew install hssh
```
## Configuration
Run `hssh init` to generate config file inside `~/.config/hssh/config.yml` (works only if not exists yet) or let the CLI creating it automatically on first run (every command).
Right now the CLI supports the following providers:
- GitLab
- GitHub
### Providers
Provide at least one connection string to a provider to start using the CLI. You can use more providers at the same time. Replace values as reported below.
- **PROVIDER** is the provider name, like **github** or **gitlab**.
- **ACCESS_TOKEN** is the provider access token. Required only for private projects/repositories.
- **ENTITY_ID** is the reference to the project/repository where the files are stored. For GitLab is the project ID, you can find it under the project name (eg. `7192789`). For GitHub is the name of the repository (eg. `beliven-it/hssh`).
- **SUBPATH** is the path to the folder inside the project/repository where config files are saved. This parameter is optional, if you want to store hosts files inside the root of the project/repository, you can delete the `@` and everything after it in the connection string.You can also provide a structured version of the provider configuration in the following format:
```yml
providers:
- type: gitlab
url: "https://gitlab.com/api/v4"
access_token: gpat-123456789
entity_id: 9999
subpath: "path/to/folder"
- type: gitlab
url: "https://git.my-domain.com/api/v4"
access_token: mydingpat-123444444
entity_id: 11
subpath: "path"```
> **NOTE**
>
> You cannot have the two providers configuration in different format. Make sure to use or the structured version, or the string version.
### fzf options
See the man page (`man fzf`) for the full list of available options and add the desired ones to the `fzf_options` string inside `~/.config/hssh/config.yml`. See more about the fzf options in the [official repository](https://github.com/junegunn/fzf#options).
### Config file example
This is a complete config file example with two providers:
```yaml
# HSSH configuration file
fzf_options: "-i"
providers:
- "gitlab://my_access_token:/7192789@folder"
- "github://my_access_token:/beliven-it/hssh"
```### Provider project/repository example
Project/repository example structure with subfolder:
```
project/repository
└── folder
├── file1
└── file2
```Project/repository example structure without subfolder:
```
project/repository
├── file1
└── file2
```SSH host example to put inside hosts files:
```bash
Host test
Hostname 1.2.3.4
User root
Port 22
IdentityFile ~/ssh/id_rsa
```
## Usage
To see available commands and options, run: `hssh`, `hssh help`, `hssh --help` or `hssh -h`.
## Development
Clone the repository and run inside the folder:
- `go mod init hssh`
- `go mod vendor`
- `go build -ldflags="-X hssh/cmd.Version=1.0.0"`Run `./hssh` inside the folder to test the CLI.
## Have found a bug?
Please open a new issue [here](https://github.com/beliven-it/hssh/issues).
## Mentions- [dmitri13](https://www.flaticon.com/authors/dmitri13) for the icon of the terminal used in the banner image
## License
Licensed under [MIT](./LICENSE)