diff --git a/pkg/drivers/ssh/ssh.go b/pkg/drivers/ssh/ssh.go index d36fd8b073..5b74a5288f 100644 --- a/pkg/drivers/ssh/ssh.go +++ b/pkg/drivers/ssh/ssh.go @@ -18,6 +18,7 @@ package ssh import ( "fmt" + "io/ioutil" "net" "os" "os/exec" @@ -25,6 +26,8 @@ import ( "strconv" "time" + "golang.org/x/crypto/ssh" + "github.com/docker/machine/libmachine/drivers" "github.com/docker/machine/libmachine/engine" "github.com/docker/machine/libmachine/log" @@ -102,6 +105,16 @@ func (d *Driver) PreCreateCheck() error { if _, err := os.Stat(d.SSHKey); os.IsNotExist(err) { return fmt.Errorf("SSH key does not exist: %q", d.SSHKey) } + + key, err := ioutil.ReadFile(d.SSHKey) + if err != nil { + return err + } + + _, err = ssh.ParsePrivateKey(key) + if err != nil { + return errors.Wrapf(err, "SSH key does not parse: %q", d.SSHKey) + } } return nil