> For the complete documentation index, see [llms.txt](https://note.onurbolatoglu.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://note.onurbolatoglu.com/ansible-advanced/ssh-keys-to-managed-nodes.md).

# SSH keys to managed nodes

### 1) SSH Key Nedir ve Neden Önemlidir?

* **SSH Key’ler**, makinenize kullanıcı adı ve şifre girmeden (passwordless) bağlanmanızı sağlayan bir “anahtar” sistemidir.
* İki dosyadan oluşur:
  1. **Private Key**: Sizin makinenizde (yerel) kalmalı ve asla başka biriyle paylaşılmamalıdır.
  2. **Public Key**: Hedef (remote) makinenin belirli bir dosyasında saklanır; bu sayede o makine, sizin Private Key’inizle eşleştiğini doğrular.

Bu ikiliyi bir “kilit ve anahtar” gibi düşünebilirsiniz. **Public Key** uzak makinede “kilit” görevi görür. Sadece “uyumlu Private Key” (sizin anahtarınız) o kilidi açabilir.

### 2) SSH Key’lerinizi Nasıl Oluşturursunuz?

1. **Kontrol Makinenize** (yani Ansible kurulu olan makineye) giriş yapın.
2. Terminalde şu komutu çalıştırın:

   ```bash
   ssh-keygen
   ```
3. Komut size birkaç soru sorar (örneğin, key’i nereye kaydetmek istediğiniz veya bir parola belirlemek isteyip istemediğiniz gibi). Eğer varsayılan seçeneklerle devam ederseniz, `~/.ssh/id_rsa` (özel anahtar) ve `~/.ssh/id_rsa.pub` (açık anahtar) isimli iki dosya oluşur.

### 3) Public Key’i (Açık Anahtar) Uzak Makineye Nasıl Kopyalarsınız?

#### Yöntem 1: Elle Kopyalama

1. **Public Key** içeriğine bakın:

   ```bash
   cat ~/.ssh/id_rsa.pub
   ```
2. Çıktıyı kopyalayın ve hedef makinede (örneğin `web1` sunucusunda) şu dosyaya ekleyin:

   ```
   ~/.ssh/authorized_keys
   ```

   Dosya yoksa oluşturabilirsiniz. Ardından aşağıdaki gibi kontrol edin:

   ```bash
   cat ~/.ssh/authorized_keys
   ```

   Public Key metniniz orada olmalı.
3. Artık Ansible kontrol makinenizdeki **özel anahtar** (id\_rsa) ile, hedef makineye şifresiz erişebilirsiniz.

#### Yöntem 2: `ssh-copy-id` Aracı

SSH copy-id, public key’inizi hedef makineye otomatik olarak ekleyen kolay bir araçtır:

```bash
ssh-copy-id -i ~/.ssh/id_rsa.pub user@hedef_makine
```

Önce uzak makinenin şifresini sorar (ilk bağlantı için). Kopyalama bittiğinde şifreye gerek kalmaz.

### 4) Ansible Ortamında SSH Keys Kullanımı

1. **Kontrol Makinesi**: SSH anahtarlarınızı barındıran makine.
2. **Yönetilen Makineler (Managed Nodes)**: Public Key’inizi authorized\_keys dosyalarına eklediğiniz sunucular.

Ansible, hedef sistemlere bağlanırken SSH kullanır. Dolayısıyla, **private key**’iniz ile hedef makinelere parolasız erişebilirsiniz.

#### Envanter (hosts) Dosyanızı Güncelleme

Eskiden şöyle bir envanter kullanıyor olabilirsiniz:

```ini
web1 ansible_host=192.168.1.100 ansible_ssh_pass=Passw0rd
web2 ansible_host=192.168.1.101 ansible_ssh_pass=Passw0rd
```

Parolayla kimlik doğrulamayı bırakıp SSH Key’e geçmek için artık `ansible_ssh_pass` kısmını kaldırabilirsiniz. Ayrıca eğer **root** kullanıcısı dışında farklı bir kullanıcıyla (örnek: `ansible`) bağlanacaksanız, bunu belirtmeniz gerekir:

```ini
[webservers]
web1 ansible_host=192.168.1.100 ansible_user=ansible
web2 ansible_host=192.168.1.101 ansible_user=ansible
```

* Eğer **private key** (id\_rsa) dosyanız varsayılan `~/.ssh/` yolunda ise, Ansible bunu otomatik algılar.
* Eğer özel bir yerde saklıyorsanız, şöyle belirtmeniz yeterli:

  ```ini
  web1 ansible_host=192.168.1.100 ansible_user=ansible ansible_ssh_private_key_file=/path/to/id_rsa
  ```

### 5) Sonraki Adımlar

1. **Şifre Tabanlı Girişleri Kapatma**: Sunucularınızda her şey sorunsuz çalıştıktan sonra, ekstra güvenlik için `PasswordAuthentication no` ayarlayarak parolalı girişi engelleyebilirsiniz.
2. **Otomatikleştirme**: Yüzlerce sunucunuz varsa, `ssh-copy-id` veya Ansible modülleri (örneğin, `authorized_key`) ile bu işlemi toplu halde yapabilirsiniz.
3. **Güvenlik İpuçları**: Private key’inizi mutlaka korunaklı bir yerde saklayın; paylaşılan dizinlerde bulundurmayın.

### 6) Özet

* **SSH Anahtarları** “kilit & anahtar” mantığıyla çalışır. Private Key sizde kalır, Public Key uzak makinede `authorized_keys` içine eklenir.
* **Parolasız Bağlantı**: Anahtarlar doğru eşleşiyorsa parola girmenize gerek kalmaz.
* **Ansible Entegrasyonu**: Ansible, normal SSH bağlantısını kullanır, dolayısıyla bu adımları yaptıktan sonra envanter dosyanızda kullanıcı ve key bilgilerini ayarlamanız yeterli.
* **Güvenlik**: Parolasız erişim sağlamak, doğru yapılandırıldığında (örneğin password-based login’i kapatarak) çok daha güvenli ve pratik bir yöntemdir.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://note.onurbolatoglu.com/ansible-advanced/ssh-keys-to-managed-nodes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
