|
|
|
|
@ -184,13 +184,11 @@ func (p *Provisioner) Provision(ui packer.Ui, comm packer.Communicator) error {
|
|
|
|
|
keyChecker := ssh.CertChecker{
|
|
|
|
|
UserKeyFallback: func(conn ssh.ConnMetadata, pubKey ssh.PublicKey) (*ssh.Permissions, error) {
|
|
|
|
|
if user := conn.User(); user != p.config.User {
|
|
|
|
|
ui.Say(fmt.Sprintf("%s is not a valid user", user))
|
|
|
|
|
return nil, errors.New("authentication failed")
|
|
|
|
|
return nil, errors.New(fmt.Sprintf("authentication failed: %s is not a valid user", user))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if !bytes.Equal(k.Marshal(), pubKey.Marshal()) {
|
|
|
|
|
ui.Say("unauthorized key")
|
|
|
|
|
return nil, errors.New("authentication failed")
|
|
|
|
|
return nil, errors.New("authentication failed: unauthorized key")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return nil, nil
|
|
|
|
|
@ -199,7 +197,7 @@ func (p *Provisioner) Provision(ui packer.Ui, comm packer.Communicator) error {
|
|
|
|
|
|
|
|
|
|
config := &ssh.ServerConfig{
|
|
|
|
|
AuthLogCallback: func(conn ssh.ConnMetadata, method string, err error) {
|
|
|
|
|
ui.Say(fmt.Sprintf("authentication attempt from %s to %s as %s using %s", conn.RemoteAddr(), conn.LocalAddr(), conn.User(), method))
|
|
|
|
|
log.Printf("authentication attempt from %s to %s as %s using %s", conn.RemoteAddr(), conn.LocalAddr(), conn.User(), method)
|
|
|
|
|
},
|
|
|
|
|
PublicKeyCallback: keyChecker.Authenticate,
|
|
|
|
|
//NoClientAuth: true,
|
|
|
|
|
@ -242,7 +240,7 @@ func (p *Provisioner) Provision(ui packer.Ui, comm packer.Communicator) error {
|
|
|
|
|
p.adapter = newAdapter(p.done, localListener, config, p.config.SFTPCmd, ui, comm)
|
|
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
|
ui.Say("shutting down the SSH proxy")
|
|
|
|
|
log.Print("shutting down the SSH proxy")
|
|
|
|
|
close(p.done)
|
|
|
|
|
p.adapter.Shutdown()
|
|
|
|
|
}()
|
|
|
|
|
@ -355,7 +353,7 @@ func (p *Provisioner) executeAnsible(ui packer.Ui, comm packer.Communicator, pri
|
|
|
|
|
go repeat(stdout)
|
|
|
|
|
go repeat(stderr)
|
|
|
|
|
|
|
|
|
|
ui.Say(fmt.Sprintf("Executing Ansible: %s", strings.Join(cmd.Args, " ")))
|
|
|
|
|
log.Printf("Executing Ansible: %s", strings.Join(cmd.Args, " "))
|
|
|
|
|
cmd.Start()
|
|
|
|
|
wg.Wait()
|
|
|
|
|
err = cmd.Wait()
|
|
|
|
|
|