Added source code
This commit is contained in:
parent
110ab9e4b0
commit
29cbbd67d4
10
README.md
10
README.md
|
@ -1,2 +1,10 @@
|
|||
# borg-gen-auth-keys
|
||||
### Generate an authorized_keys file:
|
||||
|
||||
When working with borg serve in an automated environment, you should use an authorized_keys file that restricts the ssh sessions to use only borg, and only in the directory where the repo they should use lies in. This binary takes in a json file specifying the needed info and prints out the wanted authorized_keys file.
|
||||
|
||||
To generate that file, do this (assuming you have set up everything needed for go get, and $GOPATH/bin is in your $PATH):
|
||||
|
||||
```bash
|
||||
go get git.jcg.re/jcgruenhage/borg-gen-auth-keys
|
||||
borg-gen-auth-keys yourjsonfile.json > ~/.ssh/authorized_keys
|
||||
```
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"Folder": "/mnt/backupmount",
|
||||
"Hosts":[
|
||||
{
|
||||
"Name": "host1",
|
||||
"SSHKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC7ZvLoWZgh5eMDQXLEdWobkt/B8mnM2osEynF0boorifRNwztQHY3bKXTHjUlMnnWH+UvZ3aXH16M1QmyuNi4kLUTSMu4GSVsXMfknHRjgJ927Y/j5TCGXfOcfB0B4pcgHS3fVi1VMXXiZ1S/X8cbt1llXHfEC5eKutDeJkRer3w== SSH_KEY"
|
||||
},
|
||||
{
|
||||
"Name": "host2",
|
||||
"SSHKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDIgm31x6ETn4HwxBthe3m14s1Bp9p8sT5kC/XSijN6uPpUmuF2ciRGc5QLzsBJR6MAD45zg6Q9nLBZGBnSIZDNfSGA5sqAeoZVHm4vjQWxenqG7dlNFXlC1DIHzMxxDsDUPneyXGBemAvVwL9h4HEC4xhMQIAJfaZqSWuNzzqYWw== SSH_KEY"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
"io/ioutil"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type Host struct {
|
||||
Name string
|
||||
SSHKey string
|
||||
}
|
||||
|
||||
type HostList struct {
|
||||
Folder string
|
||||
Hosts []Host
|
||||
}
|
||||
|
||||
func main() {
|
||||
inputFilePath := os.Args[1]
|
||||
dat, err := ioutil.ReadFile(inputFilePath)
|
||||
check(err)
|
||||
var hosts HostList
|
||||
err = json.Unmarshal(dat, &hosts)
|
||||
check(err)
|
||||
for i := 0; i < len(hosts.Hosts); i++ {
|
||||
fmt.Print("command=\"borg serve --restrict-to-path ")
|
||||
fmt.Print(hosts.Folder)
|
||||
fmt.Print("/")
|
||||
fmt.Print(hosts.Hosts[i].Name)
|
||||
fmt.Print("\",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding,no-user-rc ")
|
||||
fmt.Print(hosts.Hosts[i].SSHKey)
|
||||
fmt.Print("\n")
|
||||
}
|
||||
|
||||
}
|
||||
func check(e error) {
|
||||
if e != nil {
|
||||
panic(e)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue