Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/d3witt/viking
Simple way to manage your remote machines and SSH keys
https://github.com/d3witt/viking
bare-metal cli deploy deployment remote-access-tool servers ssh ssh-key ssh-keys ssh-tunnel vm
Last synced: about 2 months ago
JSON representation
Simple way to manage your remote machines and SSH keys
- Host: GitHub
- URL: https://github.com/d3witt/viking
- Owner: d3witt
- License: mit
- Created: 2024-07-28T15:01:39.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-09-18T11:35:53.000Z (4 months ago)
- Last Synced: 2024-09-18T16:29:44.603Z (4 months ago)
- Topics: bare-metal, cli, deploy, deployment, remote-access-tool, servers, ssh, ssh-key, ssh-keys, ssh-tunnel, vm
- Language: Go
- Homepage:
- Size: 130 KB
- Stars: 655
- Watchers: 4
- Forks: 5
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Viking ⛵️
[![Go Report Card](https://goreportcard.com/badge/github.com/d3witt/viking)](https://goreportcard.com/report/github.com/d3witt/viking)
[![Go Reference](https://pkg.go.dev/badge/github.com/d3witt/viking.svg)](https://pkg.go.dev/github.com/d3witt/viking)
![GitHub release](https://img.shields.io/github/v/release/d3witt/viking)### Simple way to manage your remote machines
Bare metal servers are awesome. They let you pick where to run your software and how to deploy it. You get full control to make the most of the server's resources. No limits, no compromises. That's real freedom.
Viking makes it easier to work with them.
```
NAME:
viking - Manage your SSH keys and remote machinesUSAGE:
viking [global options] command [command options]VERSION:
v1.0COMMANDS:
exec Execute shell command on machine
copy, cp Copy files/folders between local and remote machine
key Manage SSH keys
machine Manage your machines
config Get config directory path
help, h Shows a list of commands or help for one commandGLOBAL OPTIONS:
--help, -h show help
--version, -v print the version
```## 🚀 Installation
See [releases](https://github.com/d3witt/viking/releases) for pre-built binaries.
On Unix:
```
env CGO_ENABLED=0 go install -ldflags="-s -w" github.com/d3witt/viking@latest
```On Windows cmd:
```
set CGO_ENABLED=0
go install -ldflags="-s -w" github.com/d3witt/viking@latest
```On Windows powershell:
```
$env:CGO_ENABLED = '0'
go install -ldflags="-s -w" github.com/d3witt/viking@latest
```## 📄 Usage
#### 🛰️ Add machine:
```
$ viking machine add --name deathstar --key starkey 168.112.216.50 [email protected]:3000 73.30.62.32:3001
Machine deathstar added.
```> [!NOTE]
> The key flag is not required. If a key is not specified, SSH Agent will be used to connect to the server.#### 📡 Exec command (in parallel on all machines):
```
$ viking exec deathstar echo 1234
168.112.216.50: 1234
61.22.128.69: 1234
73.30.62.32: 1234
```#### 📺 Connect to the machine:
```
$ viking exec --tty deathstar /bin/bash
root@deathstar:~$
```#### 🗂️ Copy files/directories (in parallel to/from all machines):
```
$ viking cp /tmp/file.txt deathstar:/tmp/
Success: 3, Errors: 0
```#### 🔑 Add SSH key from a file
```
$ viking key add --name starkey --passphrase dart ./id_rsa_star
Key starkey added.
```#### 🆕 Generate SSH Key
```
$ viking key generate --name starkey2
Key starkey2 added.
```#### 📋 Copy public SSH Key
```
$ viking key copy starkey2
Public key copied to your clipboard.
```#### ⚙️ Custom config directory
Viking saves data locally. Set `VIKING_CONFIG_DIR` env variable for a custom directory. Use `viking config` to check the current config folder.
## 🤝 Missing a Feature?
Feel free to open a new issue, or contact me.
## 📘 License
Viking is provided under the [MIT License](https://github.com/d3witt/viking/blob/main/LICENSE).