modulepackage
0.0.0-20211217180142-2ba466cce56e
Repository: https://github.com/rs-pro/sshkeymanager.git
Documentation: pkg.go.dev
# README
golang ssh key manager
Includes a golang library, API server and client library, and a CLI tool with support for working locally or via a remote server.
Project status:
Beta. Key management and most extra features (api, client-server mode) work.
Known issues:
- no locking is present (when attempting to add multiple keys from multiple goroutines to one user at the same time, chances are only one will be added)
Security contact
Please be responsible and contact me directly at glebtv [at] gmail.com in case you find security issues.
Not intended for web-facing applications.
No safeguards or security measures included besides API Key.
You should implement your own.
$ go get github.com/rs-pro/sshkeymanager
Examples:
Get users:
package main
import (
"fmt"
"github.com/rs-pro/sshkeymanager"
"log"
)
func main() {
host := "host.name"
port := "22"
client := sshkeymanager.NewClient(host, port, sshkeymanager.DefaultConfig)
users, err := client.GetUsers()
users, err := c.GetUsers()
if err != nil {
log.Println(err)
}
for _, u := range users {
fmt.Printf("UID: %v\nUsername: %v\nHome dir: %v\nShell: %v\n\n", u.UID, u.Name, u.Home, u.Shell)
}
Get user keys:
uid := "3104"
keys, err := c.GetKeys(uid)
if err != nil {
log.Println(err)
}
for _, k := range keys {
fmt.Printf("String num: %d\nKey: %s\nEmail: %v\n\n", k.Num, k.Key, k.Email)
}
Add key
key1 := "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqF4hRYsFzO3ylja7wPxut+vu6y2VhYmfOz5wMHuP7XpUvoK/O6Red4bOUAPgexHzRw5kRAKYnaIoMPjNQYCSIhr5xNLwkZTWBxKQ48pLkuBC0yrm+ePXe8sjdFq/0ctPMYX2ZAKYUledoAeb/JbE+zPCEnzhUUqq9pkqGkJJ7I3Fp6uaRx+DELYggIHs6gqWgXLHGdaGkGPNs1xoG4EFwHOx51Jlp1IKAktRjooM9rqPV/TUkM02CoR0VncWbkgDja2lSywdFb8e8keFvbBSPYsB40VMSpXroRJjQ5eQyJlaVyuodXkKGuJmd/5lEZrtQQLISspAjYF2cFgJSsvzz [email protected]"
err = c.AddKey(key1, uid)
if err != nil {
fmt.Println(err)
}
Delete key
err = c.DeleteKey(key1, uid)
if err != nil {
fmt.Println(err)
}
// Closing connection
err = c.CloseConnection()
}
Client-server mode
Create config.yml (see example)
KEY_PASS=your-ssh-key-passphrase go run cmd/sshkeyserver/main.go
go run cmd/sshkeymanager/main.go --keyserver http://localhost:12010 --apikey your-key --host r8s.ru list-users
Running specs
env DEBUG=YES INSECURE_IGNORE_HOST_KEY=YES go test -v ./...
License
MIT License
# Packages
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# Functions
No description provided by the author
No description provided by the author
No description provided by the author
# Structs
No description provided by the author
No description provided by the author
No description provided by the author
# Interfaces
No description provided by the author