github.com/rothwerx/packer@v0.9.0/builder/virtualbox/common/ssh.go (about) 1 package common 2 3 import ( 4 "github.com/mitchellh/multistep" 5 commonssh "github.com/mitchellh/packer/common/ssh" 6 "github.com/mitchellh/packer/communicator/ssh" 7 gossh "golang.org/x/crypto/ssh" 8 ) 9 10 func CommHost(state multistep.StateBag) (string, error) { 11 return "127.0.0.1", nil 12 } 13 14 func SSHPort(state multistep.StateBag) (int, error) { 15 sshHostPort := state.Get("sshHostPort").(int) 16 return int(sshHostPort), nil 17 } 18 19 func SSHConfigFunc(config SSHConfig) func(multistep.StateBag) (*gossh.ClientConfig, error) { 20 return func(state multistep.StateBag) (*gossh.ClientConfig, error) { 21 auth := []gossh.AuthMethod{ 22 gossh.Password(config.Comm.SSHPassword), 23 gossh.KeyboardInteractive( 24 ssh.PasswordKeyboardInteractive(config.Comm.SSHPassword)), 25 } 26 27 if config.Comm.SSHPrivateKey != "" { 28 signer, err := commonssh.FileSigner(config.Comm.SSHPrivateKey) 29 if err != nil { 30 return nil, err 31 } 32 33 auth = append(auth, gossh.PublicKeys(signer)) 34 } 35 36 return &gossh.ClientConfig{ 37 User: config.Comm.SSHUsername, 38 Auth: auth, 39 }, nil 40 } 41 }