Herkesin başına gelebilecek bir sorun! O an ne yapacağınızı bilemiyorsunuz. Bu hata, Ansible’ın hedef sunuculara bağlanmaya çalışırken SSH kimlik doğrulamasını geçemediğini gösteriyor. Ama korkmayın! Bu yazıda, bu hatayı nasıl çözeceğinizi, sorunun kaynağını nasıl bulacağınızı ve adım adım çözüm yollarını paylaşacağım.
1. SSH Anahtarlarını Kontrol Edin
İlk başta, SSH anahtarlarını kontrol etmek iyi bir fikir olabilir. Çünkü, Ansible SSH üzerinden kimlik doğrulaması yapmaya çalıştığında, doğru anahtarı kullanıp kullanmadığınızı doğrulamak önemli bir adımdır.
Sunucunuza bağlanırken SSH anahtarınızın doğru olup olmadığını kontrol etmek için şu adımları izleyin:
ssh -v kullanıcı_adı@sunucu_adresi
Bu komut, SSH bağlantı sürecinde meydana gelen adımları detaylı bir şekilde gösterir. Hata mesajlarını dikkatle inceleyin. Özellikle "Authentication failed" satırlarına bakın. Eğer doğru anahtar ile giriş yapmadıysanız, "Permission denied (publickey)" gibi bir mesaj alabilirsiniz.
Çözüm: Eğer SSH anahtarınız yanlışsa veya sunucunun `~/.ssh/authorized_keys` dosyasında yer almıyorsa, doğru anahtarları eklediğinizden emin olun.
2. Ansible Konfigürasyon Dosyasını Kontrol Edin
Eğer SSH anahtarlarınızın doğru olduğundan eminseniz, Ansible yapılandırma dosyanızı gözden geçirebilirsiniz. Ansible, varsayılan olarak `~/.ansible.cfg` dosyasındaki ayarları kullanır ve burada yapılan yanlış bir yapılandırma da bağlanma sorunlarına yol açabilir.
[defaults]
inventory = /path/to/your/inventory
private_key_file = /path/to/your/private_key
Çözüm: Bu dosyada doğru anahtar dosyasını belirttiğinizden emin olun. Ayrıca, `ansible.cfg` dosyasının bulunduğu dizinde doğru izinlere sahip olup olmadığını kontrol edin.
3. Sunucuya Erişim İzinlerini Kontrol Edin
Hatanın kaynağı bazen çok basit olabilir: Sunucuya erişim izniniz olmayabilir. Eğer SSH anahtarları doğru olsa bile, sunucuya doğru erişim izinlerine sahip olmadığınızda bu hatayı alabilirsiniz.
Bunu kontrol etmek için şu komutu kullanabilirsiniz:
ssh-keygen -F sunucu_adresi
Eğer "No matching host key found" gibi bir mesaj alıyorsanız, sunucuya bağlanmadan önce SSH anahtarını doğru bir şekilde sunucuya eklemeniz gerekir.
Çözüm: Anahtarların doğru ve sunucuya eklenmiş olduğundan emin olun. Ayrıca, sunucuya erişim izinlerinizi gözden geçirin.
4. Ansible Playbook ve SSH Parametrelerini Kontrol Edin
Son olarak, eğer yukarıdaki adımlar hala çözüm sunmadıysa, Ansible playbook'unuzdaki SSH parametrelerini gözden geçirin. Ansible, playbook dosyasında belirtilen parametrelerle bağlantı kurmaya çalışır ve bazen yanlış parametreler de bu tür hatalara yol açabilir.
Örnek bir playbook'un SSH bağlantı ayarlarını şu şekilde kontrol edebilirsiniz:
- name: Sunucuda yapılandırma değişikliği yap
hosts: sunucu
gather_facts: no
tasks:
- name: Paket yükle
apt:
name: git
state: present
vars:
ansible_ssh_private_key_file: /path/to/private_key
ansible_ssh_user: kullanıcı_adı
Çözüm: Burada `ansible_ssh_private_key_file` ve `ansible_ssh_user` gibi parametrelerin doğru şekilde yapılandırıldığından emin olun. Parametrelerin doğru sunucuya işaret ettiğini ve doğru kullanıcı adı ve özel anahtar kullanıldığını kontrol edin.
5. SSH Servisinin Durumunu Kontrol Edin
Son bir kontrol yapmanız gerekebilir: Hedef sunucudaki SSH servisinin çalışıp çalışmadığını kontrol edin. Sunucuya fiziksel erişiminiz varsa, sunucuda şu komutu kullanarak SSH servisini kontrol edebilirsiniz:
systemctl status ssh
Eğer SSH servisi duruyorsa, şu komutla servisi başlatabilirsiniz:
sudo systemctl start ssh
Çözüm: SSH servisi çalışıyorsa, hata almadığınızdan emin olun. Eğer SSH servisi başlamıyorsa, sistem loglarını kontrol ederek nedenini tespit edin.
Sonuç
Ansible 'SSH Authentication Failed' hatası, çoğu zaman küçük bir yapılandırma hatasından kaynaklanır. Bu yazıda, hatayı adım adım nasıl çözebileceğinizi anlattım. Doğru SSH anahtarlarının kullanıldığından, Ansible konfigürasyonlarının doğru olduğundan ve sunucudaki erişim izinlerinin düzgün çalıştığından emin olduğunuzda, bu hata ortadan kalkacaktır.
Hadi şimdi, terminal ekranında keyifli bir yolculuğa çıkın ve Ansible ile sorunsuz bir bağlantı sağlayın!