github.com/askholme/packer@v0.7.2-0.20140924152349-70d9566a6852/builder/digitalocean/ssh.go (about) 1 package digitalocean 2 3 import ( 4 "code.google.com/p/go.crypto/ssh" 5 "fmt" 6 "github.com/mitchellh/multistep" 7 ) 8 9 func sshAddress(state multistep.StateBag) (string, error) { 10 config := state.Get("config").(config) 11 ipAddress := state.Get("droplet_ip").(string) 12 return fmt.Sprintf("%s:%d", ipAddress, config.SSHPort), 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.SSHUsername, 26 Auth: []ssh.AuthMethod{ 27 ssh.PublicKeys(signer), 28 }, 29 }, nil 30 }