Implement initial support for passphrase-protected SSH keyfiles

This commit is contained in:
2024-05-17 11:42:44 -04:00
parent d8fa62f1ad
commit 66995c3c06
2 changed files with 7 additions and 4 deletions
+5 -2
View File
@@ -5,6 +5,7 @@ import (
"github.com/rwinkhart/MUTN/src/backend" "github.com/rwinkhart/MUTN/src/backend"
"github.com/rwinkhart/MUTN/src/sync" "github.com/rwinkhart/MUTN/src/sync"
"os" "os"
"strconv"
) )
// TempInitCli initializes the MUTN environment based on user input // TempInitCli initializes the MUTN environment based on user input
@@ -31,13 +32,15 @@ func TempInitCli() {
configSSH := inputBinary("Configure SSH settings (for synchronization)?") configSSH := inputBinary("Configure SSH settings (for synchronization)?")
if configSSH { if configSSH {
// necessary SSH info // necessary SSH info
fmt.Print(AnsiBold+"Note:"+backend.AnsiReset, "Only key-based authentication is supported (keys may optionally be passphrase-protected).\nThe remote server must already be in your ~/.ssh/known_hosts file.\n\n")
sshUser := input("Remote SSH username:") sshUser := input("Remote SSH username:")
sshIP := input("Remote SSH IP address:") sshIP := input("Remote SSH IP address:")
sshPort := input("Remote SSH port:") sshPort := input("Remote SSH port:")
sshIdentity := input("SSH private identity file path:") // TODO implement generator and selector sshKey := input("SSH private identity file path:") // TODO implement generator and selector
sshKeyProtected := inputBinary("Is the identity file password-protected?")
// write config file // write config file
backend.TempInit(map[string]string{"textEditor": textEditor, "gpgID": gpgID, "sshUser": sshUser, "sshIP": sshIP, "sshPort": sshPort, "sshIdentity": sshIdentity}) backend.TempInit(map[string]string{"textEditor": textEditor, "gpgID": gpgID, "sshUser": sshUser, "sshIP": sshIP, "sshPort": sshPort, "sshIdentity": sshKey, "sshIDProtected": strconv.FormatBool(sshKeyProtected)})
// generate device ID // generate device ID
sync.DeviceIDGen() sync.DeviceIDGen()
+2 -2
View File
@@ -25,8 +25,8 @@ func input(prompt string) string {
return strings.TrimRight(userInput, "\n\r ") // remove trailing newlines, carriage returns, and spaces return strings.TrimRight(userInput, "\n\r ") // remove trailing newlines, carriage returns, and spaces
} }
// inputHidden prompts the user for input and returns the input as a string, hiding the input from the terminal // InputHidden prompts the user for input and returns the input as a string, hiding the input from the terminal
func inputHidden(prompt string) string { func InputHidden(prompt string) string {
fmt.Print("\n" + prompt + " ") fmt.Print("\n" + prompt + " ")
byteInput, _ := terminal.ReadPassword(int(os.Stdin.Fd())) byteInput, _ := terminal.ReadPassword(int(os.Stdin.Fd()))
password := string(byteInput) password := string(byteInput)