github.com/askholme/packer@v0.7.2-0.20140924152349-70d9566a6852/builder/qemu/ssh.go (about) 1 package qemu 2 3 import ( 4 "fmt" 5 6 gossh "code.google.com/p/go.crypto/ssh" 7 "github.com/mitchellh/multistep" 8 commonssh "github.com/mitchellh/packer/common/ssh" 9 "github.com/mitchellh/packer/communicator/ssh" 10 ) 11 12 func sshAddress(state multistep.StateBag) (string, error) { 13 sshHostPort := state.Get("sshHostPort").(uint) 14 return fmt.Sprintf("127.0.0.1:%d", sshHostPort), nil 15 } 16 17 func sshConfig(state multistep.StateBag) (*gossh.ClientConfig, error) { 18 config := state.Get("config").(*config) 19 20 auth := []gossh.AuthMethod{ 21 gossh.Password(config.SSHPassword), 22 gossh.KeyboardInteractive( 23 ssh.PasswordKeyboardInteractive(config.SSHPassword)), 24 } 25 26 if config.SSHKeyPath != "" { 27 signer, err := commonssh.FileSigner(config.SSHKeyPath) 28 if err != nil { 29 return nil, err 30 } 31 32 auth = append(auth, gossh.PublicKeys(signer)) 33 } 34 35 return &gossh.ClientConfig{ 36 User: config.SSHUser, 37 Auth: auth, 38 }, nil 39 }