# SSH, Become और ansible.cfg — Ansible: Playbooks से Servers का Automation

Source: https://www.geekswithgeeks.com/hi/ansible/ans-connection-config

> SSH keys से जुड़ें, become से privileges बढ़ाएँ और ansible.cfg में project defaults तय करें।

## Keys, users और privilege

Ansible आपका सामान्य SSH setup उपयोग करता है: key-आधारित login, remote user (`ansible_user`) और `~/.ssh/config`। Passwords की जगह **SSH keys** चुनें। कई कामों को root चाहिए, इसलिए root से login करने की जगह उन tasks के लिए **`become: true`** (sudo) उपयोग करें। Project-स्तर की **`ansible.cfg`** inventory path और समानांतर connections की संख्या (`forks`) जैसे defaults तय करती है ताकि repo का हर command एक-सा चले।

## छोटी ansible.cfg

इसे अपने playbooks के साथ commit करें। असली परिवेशों में host-key checking चालू रखें; केवल फेंकने योग्य labs में बंद करें।

```ini
[defaults]
inventory = inventory.ini
remote_user = deploy
forks = 10
retry_files_enabled = False
host_key_checking = True

[privilege_escalation]
become = False          # opt in per play/task with become: true
become_method = sudo
```

## Deploy user को सिर्फ़ ज़रूरी sudo दें

ज़रूरी commands तक सीमित passwordless sudo वाला समर्पित automation user साझा root खाते से सुरक्षित है। उसकी SSH key बदलते रहें और सुरक्षित रखें।

**Quiz:** जिस task को root चाहिए, उसे आम तौर पर वह कैसे मिलना चाहिए?

- [ ] Password से root login
- [x] उस task या play पर become: true
- [ ] SSH बंद करना
- [ ] Chat में private key साझा करना

*Answer:* उस task या play पर become: true. प्रति-task privilege बढ़ाना connection user को डिफ़ॉल्ट रूप से अधिकार-रहित रखता है।
