diff --git a/cmd/jujud/machine.go b/cmd/jujud/machine.go
index <HASH>..<HASH> 100644
--- a/cmd/jujud/machine.go
+++ b/cmd/jujud/machine.go
@@ -172,9 +172,14 @@ func (a *MachineAgent) APIWorker(ensureStateWorker func()) (worker.Worker, error
 	runner.StartWorker("logger", func() (worker.Worker, error) {
 		return workerlogger.NewLogger(st.Logger(), agentConfig), nil
 	})
-	runner.StartWorker("authenticationworker", func() (worker.Worker, error) {
-		return authenticationworker.NewWorker(st.KeyUpdater(), agentConfig), nil
-	})
+
+	// If not a local provider, start the worker to manage SSH keys.
+	providerType := agentConfig.Value(agent.ProviderType)
+	if providerType != provider.Local && providerType != provider.Null {
+		runner.StartWorker("authenticationworker", func() (worker.Worker, error) {
+			return authenticationworker.NewWorker(st.KeyUpdater(), agentConfig), nil
+		})
+	}
 
 	// Perform the operations needed to set up hosting for containers.
 	if err := a.setupContainerSupport(runner, st, entity); err != nil {
Do not start auth worker for local provider