Setting up Password-less Authentication for Ansible: A Step-by-Step Guide

Table of contents

When automating tasks with Ansible, setting up password less SSH authentication is crucial for smooth operations. There are two main ways to achieve this: Public Key Authentication and Password Authentication. Below is a step-by-step guide for both methods.
Public Key Authentication
This is the most secure and common method for password-less SSH access. However, I encountered an error while using the ssh-copy-id
command, which returned "ERROR: No identities found". Upon investigation, I realized that my .ssh
folder didn’t contain the public/private key pair. To resolve this issue, here’s what I did:
Generate SSH Keys: I ran the following command to generate the SSH key pair:
ssh-keygen
Copy the Public Key to the EC2 Instance:
After generating the keys, I used the following command to copy the public key to the EC2 instance. Replace the path to the private key and the EC2 instance's public IP:ssh-copy-id -f "-o IdentityFile <path-to-private-key>" ubuntu@<instance-public-ip>
For example, if your private key is located in
~/.ssh/my-key.pem
and your instance’s public IP is12.34.56.78
, the command would look like:ssh-copy-id -f "-o IdentityFile ~/.ssh/my-key.pem" ubuntu@12.34.56.78
This solved the issue, and I was able to authenticate to the instance without entering a password.
Password Authentication
Alternatively, you can use password authentication. Here's how:
Enable Password Authentication:
You need to update the SSH configuration to allow password-based logins.Edit the file
/etc/ssh/sshd_config
on your EC2 instance.Change
PasswordAuthentication
fromno
toyes
and uncomment the line.
Set the Password:
Set a password for theubuntu
user with the following command:sudo passwd ubuntu
Copy the Public Key Using Password Authentication:
Once the password is set, you can copy the public key usingssh-copy-id
from your local machine:ssh-copy-id ubuntu@<instance-public-ip>
You’ll be prompted to enter the password you just set.
Test the Connection:
After completing the above steps, you can now log in to your EC2 instance without entering a password using:
ssh ubuntu@<instance-public-ip>
Conclusion
While both methods allow you to set up password less authentication, Public Key Authentication is the more secure and recommended approach, especially when working with automation tools like ansible.
Subscribe to my newsletter
Read articles from Parth Ranalkar directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Parth Ranalkar
Parth Ranalkar
Dedicated and results-driven DevOps Engineer with 3 years of hands-on experience in automating workflows, optimizing CI/CD pipelines, managing cloud infrastructure, and improving system reliability.