Loading...

Watch: Ansible troubleshooting - Failed to connect to the host via ssh host localhost port 22

In Ansible troubleshooting, learn about the Failed to connect to the host via SSH error, common during local testing with ansible_connection local.

Introduction

In today's episode of Ansible Pilot, I'm Luca Berton, and we'll delve into Ansible troubleshooting, focusing on the common error "Failed to connect to the host via SSH: localhost port 22." This error often occurs when testing your code on your local machine using the ansible_connection local parameter.

Understanding the Error

The exact error message you might encounter in the terminal is:

``bash

fatal: [localhost]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via SSH: ssh: connect to host localhost port 22: Connection refused", "unreachable": true}

`

This error is a clear indication that Ansible failed to establish an SSH connection to the localhost on port 22.

Live Demo

Let's jump into a live Playbook to reproduce the Ansible connection failed problem and fix it in the inventory file.

Error Code: ping.yml

`yaml

---

  • name: ping module Playbook

hosts: all

tasks:

- name: test connection

ansible.builtin.ping:

`

Error Execution

Executing the playbook with the error:

`bash

$ ansible-playbook -i inventory ping.yml

PLAY [ping module Playbook] *

TASK [Gathering Facts]

fatal: [localhost]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via SSH: ssh: connect to host localhost port 22: Connection refused", "unreachable": true}

PLAY RECAP **

localhost : ok=0 changed=0 unreachable=1 failed=0 skipped=0 rescued=0 ignored=0

`

Fix Code: ping.yml

`yaml

---

  • name: ping module Playbook

hosts: all

tasks:

- name: test connection

ansible.builtin.ping:

`

Fix Execution

Executing the fixed playbook:

``bash

$ ansible-playbook -i inventory ping.yml

PLAY [ping module Playbook] *

TASK [Gathering Facts]

[WARNING]: Platform darwin on host localhost is using the discovered Python interpreter

at /opt/homebrew/bin/python3.10, but future installation of another Python interpreter

could change the meaning of that path. See https://docs.ansible.com/ansible-

core/2.13/reference_appendices/interpreter_discovery.html for more information.

ok: [localhost]

TASK [test conne

Read the full tutorial: Ansible troubleshooting - Failed to connect to the host via ssh host localhost port 22