Skip to content

Commit ace67bf

Browse files
Added a warning if there are no registered users to help with debugging (#189)
1 parent 45de6c2 commit ace67bf

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

internal/server/sshd.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"bytes"
55
"errors"
66
"fmt"
7+
"io"
78
"log"
89
"net"
910
"os"
@@ -230,6 +231,20 @@ func registerChannelCallbacks(connectionDetails string, user *users.User, chans
230231
return fmt.Errorf("connection terminated")
231232
}
232233

234+
func isDirEmpty(name string) bool {
235+
f, err := os.Open(name)
236+
if err != nil {
237+
return false
238+
}
239+
defer f.Close()
240+
241+
_, err = f.Readdirnames(1)
242+
if err == io.EOF {
243+
return true
244+
}
245+
return false
246+
}
247+
233248
func StartSSHServer(sshListener net.Listener, privateKey ssh.Signer, insecure, openproxy bool, dataDir string, timeout int) {
234249
//Taken from the server example, authorized keys are required for controllers
235250
adminAuthorizedKeysPath := filepath.Join(dataDir, "authorized_keys")
@@ -248,6 +263,10 @@ func StartSSHServer(sshListener net.Listener, privateKey ssh.Signer, insecure, o
248263
log.Println("Created user keys directory (", usersKeysDir, ")")
249264
}
250265

266+
if _, err := os.Stat(adminAuthorizedKeysPath); err != nil && os.IsNotExist(err) && isDirEmpty(usersKeysDir) {
267+
log.Println("WARNING: authorized_keys file does not exist in server directory, and no user keys are registered. You will not be able to log in to this server!")
268+
}
269+
251270
config := &ssh.ServerConfig{
252271
ServerVersion: "SSH-2.0-OpenSSH_8.0",
253272
PublicKeyCallback: func(conn ssh.ConnMetadata, key ssh.PublicKey) (*ssh.Permissions, error) {

0 commit comments

Comments
 (0)