github.com/rothwerx/packer@v0.9.0/builder/digitalocean/ssh.go (about) 1 package digitalocean 2 3 import ( 4 "fmt" 5 "golang.org/x/crypto/ssh" 6 7 "github.com/mitchellh/multistep" 8 ) 9 10 func commHost(state multistep.StateBag) (string, error) { 11 ipAddress := state.Get("droplet_ip").(string) 12 return ipAddress, nil 13 } 14 15 func sshConfig(state multistep.StateBag) (*ssh.ClientConfig, error) { 16 config := state.Get("config").(Config) 17 privateKey := state.Get("privateKey").(string) 18 19 signer, err := ssh.ParsePrivateKey([]byte(privateKey)) 20 if err != nil { 21 return nil, fmt.Errorf("Error setting up SSH config: %s", err) 22 } 23 24 return &ssh.ClientConfig{ 25 User: config.Comm.SSHUsername, 26 Auth: []ssh.AuthMethod{ 27 ssh.PublicKeys(signer), 28 }, 29 }, nil 30 }