Diff
1diff --git a/server/backend/sqlite/user.go b/server/backend/sqlite/user.go
2index 0e3c609caf9b9f4ed131dc181124d49ed9e2d50a..86d36ac1e84d443910e7a5dfe0714f57f416777d 100644
3--- a/server/backend/sqlite/user.go
4+++ b/server/backend/sqlite/user.go
5@@ -101,7 +101,6 @@ func (d *SqliteBackend) AccessLevel(repo string, username string) backend.Access
6 return backend.ReadOnlyAccess
7 }
8
9- // If the repository doesn't exist, the user has read/write access.
10 if user != nil {
11 // If the repository doesn't exist, the user has read/write access.
12 if anon > backend.ReadWriteAccess {
13diff --git a/server/daemon.go b/server/daemon.go
14index 007e3c68e3f19930471ca9afe06964e93cf90642..79b94d88418307fedd16858afa6c13842067b4f9 100644
15--- a/server/daemon.go
16+++ b/server/daemon.go
17@@ -221,6 +221,11 @@ func (d *GitDaemon) handleClient(conn net.Conn) {
18 return
19 }
20
21+ if !d.cfg.Backend.AllowKeyless() {
22+ fatal(c, ErrNotAuthed)
23+ return
24+ }
25+
26 name := utils.SanitizeRepo(string(opts[0]))
27 logger.Debugf("git: connect %s %s %s", c.RemoteAddr(), cmd, name)
28 defer logger.Debugf("git: disconnect %s %s %s", c.RemoteAddr(), cmd, name)
29diff --git a/server/ssh.go b/server/ssh.go
30index 30ea8e498c24245a116733f7d6ca21280a30c6dd..c99e41bf11b923a218d0ad43daf2a21ebc0e40a1 100644
31--- a/server/ssh.go
32+++ b/server/ssh.go
33@@ -137,10 +137,15 @@ func (s *SSHServer) Shutdown(ctx context.Context) error {
34
35 // PublicKeyAuthHandler handles public key authentication.
36 func (s *SSHServer) PublicKeyHandler(ctx ssh.Context, pk ssh.PublicKey) (allowed bool) {
37+ if pk == nil {
38+ return s.cfg.Backend.AllowKeyless()
39+ }
40+
41 ak := backend.MarshalAuthorizedKey(pk)
42 defer func() {
43 publicKeyCounter.WithLabelValues(ak, ctx.User(), strconv.FormatBool(allowed)).Inc()
44 }()
45+
46 for _, k := range s.cfg.InitialAdminKeys {
47 if k == ak {
48 allowed = true
49@@ -156,7 +161,7 @@ func (s *SSHServer) PublicKeyHandler(ctx ssh.Context, pk ssh.PublicKey) (allowed
50
51 // KeyboardInteractiveHandler handles keyboard interactive authentication.
52 func (s *SSHServer) KeyboardInteractiveHandler(ctx ssh.Context, _ gossh.KeyboardInteractiveChallenge) bool {
53- ac := s.cfg.Backend.AllowKeyless() && s.PublicKeyHandler(ctx, nil)
54+ ac := s.cfg.Backend.AllowKeyless()
55 keyboardInteractiveCounter.WithLabelValues(ctx.User(), strconv.FormatBool(ac)).Inc()
56 return ac
57 }