Diff
1diff --git a/server/backend/sqlite/sqlite.go b/server/backend/sqlite/sqlite.go
2index eb7c3413cefdb7c443300e90d0403af17aca07af..5ddb9529ed278f53ce654ba3ed31aa1dd01320d1 100644
3--- a/server/backend/sqlite/sqlite.go
4+++ b/server/backend/sqlite/sqlite.go
5@@ -10,6 +10,7 @@ import (
6 "strings"
7 "text/template"
8
9+ "github.com/charmbracelet/keygen"
10 "github.com/charmbracelet/log"
11 "github.com/charmbracelet/soft-serve/git"
12 "github.com/charmbracelet/soft-serve/server/backend"
13@@ -27,6 +28,7 @@ var (
14 type SqliteBackend struct {
15 dp string
16 db *sqlx.DB
17+ ckp string
18 AdditionalAdmins []string
19 }
20
21@@ -42,6 +44,17 @@ func NewSqliteBackend(dataPath string) (*SqliteBackend, error) {
22 return nil, err
23 }
24
25+ ckp := filepath.Join(dataPath, "ssh", "soft_serve_client")
26+ _, err := keygen.NewWithWrite(ckp, nil, keygen.Ed25519)
27+ if err != nil {
28+ return nil, err
29+ }
30+
31+ ckp, err = filepath.Abs(ckp)
32+ if err != nil {
33+ return nil, err
34+ }
35+
36 db, err := sqlx.Connect("sqlite", filepath.Join(dataPath, "soft-serve.db"+
37 "?_pragma=busy_timeout(5000)&_pragma=foreign_keys(1)"))
38 if err != nil {
39@@ -49,8 +62,9 @@ func NewSqliteBackend(dataPath string) (*SqliteBackend, error) {
40 }
41
42 d := &SqliteBackend{
43- dp: dataPath,
44- db: db,
45+ dp: dataPath,
46+ db: db,
47+ ckp: ckp,
48 }
49
50 if err := d.init(); err != nil {
51@@ -169,7 +183,16 @@ func (d *SqliteBackend) ImportRepository(name string, remote string, opts backen
52 copts := git.CloneOptions{
53 Mirror: opts.Mirror,
54 Quiet: true,
55+ CommandOptions: git.CommandOptions{
56+ Envs: []string{
57+ fmt.Sprintf(`GIT_SSH_COMMAND=ssh -o UserKnownHostsFile="%s" -o StrictHostKeyChecking=no -i "%s"`,
58+ filepath.Join(filepath.Dir(d.ckp), "known_hosts"),
59+ d.ckp,
60+ ),
61+ },
62+ },
63 }
64+
65 if err := git.Clone(remote, rp, copts); err != nil {
66 logger.Debug("failed to clone repository", "err", err, "mirror", opts.Mirror, "remote", remote, "path", rp)
67 return nil, err
68diff --git a/server/config/config.go b/server/config/config.go
69index 35de493ed86353b3385eb14d4e008b5013a651a6..e9295409ac28808e18d576d08e477f04bd6664cf 100644
70--- a/server/config/config.go
71+++ b/server/config/config.go
72@@ -128,7 +128,7 @@ func DefaultConfig() *Config {
73 SSH: SSHConfig{
74 ListenAddr: ":23231",
75 PublicURL: "ssh://localhost:23231",
76- KeyPath: filepath.Join("ssh", "soft_serve"),
77+ KeyPath: filepath.Join("ssh", "soft_serve_host"),
78 InternalKeyPath: filepath.Join("ssh", "soft_serve_internal"),
79 MaxTimeout: 0,
80 IdleTimeout: 120,