diff --git a/common/step_connect_ssh.go b/common/step_connect_ssh.go
index <HASH>..<HASH> 100644
--- a/common/step_connect_ssh.go
+++ b/common/step_connect_ssh.go
@@ -72,7 +72,9 @@ WaitLoop:
 			state.Put("communicator", comm)
 			break WaitLoop
 		case <-timeout:
-			ui.Error("Timeout waiting for SSH.")
+			err := fmt.Errorf("Timeout waiting for SSH.")
+			state.Put("error", err)
+			ui.Error(err.Error())
 			close(cancel)
 			return multistep.ActionHalt
 		case <-time.After(1 * time.Second):
An SSH timeout should be treated as an error