ssh: load more host key formats than rsa

This commit is contained in:
Mikaël Cluseau 2023-12-17 15:33:56 +01:00
parent d69f2f27ee
commit 82afd9492a

26
ssh.go
View File

@ -23,18 +23,28 @@ func startSSH(cfg *config.Config) {
PublicKeyCallback: sshCheckPubkey,
}
pkBytes, err := os.ReadFile("/id_rsa") // TODO configurable
if err != nil {
fatalf("ssh: failed to load private key: %v", err)
hostKeyLoaded := false
for _, format := range []string{"rsa", "dsa", "ecdsa", "ed25519"} {
pkBytes, err := os.ReadFile("/id_" + format)
if err != nil {
log.Printf("ssh : failed to load %s host key: %v", format, err)
continue
}
pk, err := ssh.ParsePrivateKey(pkBytes)
if err != nil {
log.Printf("ssh: failed to parse %s host key: %v", format, err)
continue
}
sshConfig.AddHostKey(pk)
}
pk, err := ssh.ParsePrivateKey(pkBytes)
if err != nil {
fatalf("ssh: failed to parse private key: %v", err)
if !hostKeyLoaded {
fatalf("ssh: failed to load any host key")
}
sshConfig.AddHostKey(pk)
sshBind := ":22" // TODO configurable
listener, err := net.Listen("tcp", sshBind)
if err != nil {