diff --git a/internal/app/wwctl/configure/ssh/main.go b/internal/app/wwctl/configure/ssh/main.go index c4bf59c3..cc908d01 100644 --- a/internal/app/wwctl/configure/ssh/main.go +++ b/internal/app/wwctl/configure/ssh/main.go @@ -1,8 +1,48 @@ package ssh -import "github.com/spf13/cobra" +import ( + "fmt" + "github.com/hpcng/warewulf/internal/pkg/util" + "github.com/hpcng/warewulf/internal/pkg/wwlog" + "github.com/spf13/cobra" + "os" +) func CobraRunE(cmd *cobra.Command, args []string) error { + err := os.MkdirAll("/etc/warewulf/keys", 0755) + if err != nil { + wwlog.Printf(wwlog.ERROR, "Could not create base directory: %s\n", err) + os.Exit(1) + } + + if util.IsFile("/etc/warewulf/keys/ssh_host_rsa_key") == false { + fmt.Printf("Setting up key: ssh_host_rsa_key\n") + util.ExecInteractive("ssh-keygen", "-q", "-t", "rsa", "-f", "/etc/warewulf/keys/ssh_host_rsa_key", "-C", "", "-N", "") + } else { + fmt.Printf("Skipping, key already exists: ssh_host_rsa_key\n") + } + + if util.IsFile("/etc/warewulf/keys/ssh_host_dsa_key") == false { + fmt.Printf("Setting up key: ssh_host_dsa_key\n") + util.ExecInteractive("ssh-keygen", "-q", "-t", "dsa", "-f", "/etc/warewulf/keys/ssh_host_dsa_key", "-C", "", "-N", "") + } else { + fmt.Printf("Skipping, key already exists: ssh_host_dsa_key\n") + } + + if util.IsFile("/etc/warewulf/keys/ssh_host_ecdsa_key") == false { + fmt.Printf("Setting up key: ssh_host_ecdsa_key\n") + util.ExecInteractive("ssh-keygen", "-q", "-t", "ecdsa", "-f", "/etc/warewulf/keys/ssh_host_ecdsa_key", "-C", "", "-N", "") + } else { + fmt.Printf("Skipping, key already exists: ssh_host_ecdsa_key\n") + } + + if util.IsFile("/etc/warewulf/keys/ssh_host_ed25519_key") == false { + fmt.Printf("Setting up key: ssh_host_ed25519_key\n") + util.ExecInteractive("ssh-keygen", "-q", "-t", "ed25519", "-f", "/etc/warewulf/keys/ssh_host_ed25519_key", "-C", "", "-N", "") + } else { + fmt.Printf("Skipping, key already exists: ssh_host_ed25519_key\n") + } + return nil } diff --git a/overlays/system/default/etc/ssh/ssh_host_dsa_key.pub.ww b/overlays/system/default/etc/ssh/ssh_host_dsa_key.pub.ww new file mode 100644 index 00000000..4bb82192 --- /dev/null +++ b/overlays/system/default/etc/ssh/ssh_host_dsa_key.pub.ww @@ -0,0 +1 @@ +{{Include "/etc/warewulf/keys/ssh_host_dsa_key.pub"}} diff --git a/overlays/system/default/etc/ssh/ssh_host_dsa_key.ww b/overlays/system/default/etc/ssh/ssh_host_dsa_key.ww new file mode 100644 index 00000000..581f48f4 --- /dev/null +++ b/overlays/system/default/etc/ssh/ssh_host_dsa_key.ww @@ -0,0 +1 @@ +{{Include "/etc/warewulf/keys/ssh_host_dsa_key"}} diff --git a/overlays/system/default/etc/ssh/ssh_host_ecdsa_key.pub.ww b/overlays/system/default/etc/ssh/ssh_host_ecdsa_key.pub.ww new file mode 100644 index 00000000..b6d9aa89 --- /dev/null +++ b/overlays/system/default/etc/ssh/ssh_host_ecdsa_key.pub.ww @@ -0,0 +1 @@ +{{Include "/etc/warewulf/keys/ssh_host_ecdsa_key.pub"}} diff --git a/overlays/system/default/etc/ssh/ssh_host_ecdsa_key.ww b/overlays/system/default/etc/ssh/ssh_host_ecdsa_key.ww new file mode 100644 index 00000000..fbf8934c --- /dev/null +++ b/overlays/system/default/etc/ssh/ssh_host_ecdsa_key.ww @@ -0,0 +1 @@ +{{Include "/etc/warewulf/keys/ssh_host_ecdsa_key"}} diff --git a/overlays/system/default/etc/ssh/ssh_host_ed25519_key.pub.ww b/overlays/system/default/etc/ssh/ssh_host_ed25519_key.pub.ww new file mode 100644 index 00000000..76dbcfdb --- /dev/null +++ b/overlays/system/default/etc/ssh/ssh_host_ed25519_key.pub.ww @@ -0,0 +1 @@ +{{Include "/etc/warewulf/keys/ssh_host_ed25519_key.pub"}} diff --git a/overlays/system/default/etc/ssh/ssh_host_ed25519_key.ww b/overlays/system/default/etc/ssh/ssh_host_ed25519_key.ww new file mode 100644 index 00000000..e6dec541 --- /dev/null +++ b/overlays/system/default/etc/ssh/ssh_host_ed25519_key.ww @@ -0,0 +1 @@ +{{Include "/etc/warewulf/keys/ssh_host_ed25519_key"}} diff --git a/overlays/system/default/etc/ssh/ssh_host_rsa_key.pub.ww b/overlays/system/default/etc/ssh/ssh_host_rsa_key.pub.ww new file mode 100644 index 00000000..d5b09fa8 --- /dev/null +++ b/overlays/system/default/etc/ssh/ssh_host_rsa_key.pub.ww @@ -0,0 +1 @@ +{{Include "/etc/warewulf/keys/ssh_host_rsa_key.pub"}} diff --git a/overlays/system/default/etc/ssh/ssh_host_rsa_key.ww b/overlays/system/default/etc/ssh/ssh_host_rsa_key.ww new file mode 100644 index 00000000..feffaad5 --- /dev/null +++ b/overlays/system/default/etc/ssh/ssh_host_rsa_key.ww @@ -0,0 +1 @@ +{{Include "/etc/warewulf/keys/ssh_host_rsa_key"}}