package lin import ( "fmt" "github.com/hashicorp/packer/builder/azure/common/constants" "github.com/mitchellh/multistep" "golang.org/x/crypto/ssh" ) func SSHHost(state multistep.StateBag) (string, error) { host := state.Get(constants.SSHHost).(string) return host, nil } // SSHConfig returns a function that can be used for the SSH communicator // config for connecting to the instance created over SSH using the generated // private key. func SSHConfig(username string) func(multistep.StateBag) (*ssh.ClientConfig, error) { return func(state multistep.StateBag) (*ssh.ClientConfig, error) { privateKey := state.Get(constants.PrivateKey).(string) signer, err := ssh.ParsePrivateKey([]byte(privateKey)) if err != nil { return nil, fmt.Errorf("Error setting up SSH config: %s", err) } return &ssh.ClientConfig{ User: username, Auth: []ssh.AuthMethod{ ssh.PublicKeys(signer), }, HostKeyCallback: ssh.InsecureIgnoreHostKey(), }, nil } }