# SSH anahtarı oluşturma ve kullanma (Windows, Mac, Linux)

https://www.gyrohosting.com/bilgi-bankasi/makale/ssh-anahtari-olusturma

- **Bu rehberde ne öğreneceksiniz**: Bilgisayarınızda bir SSH anahtar çifti oluşturmayı, açık anahtarı Gyro sunucu siparişine ya da mevcut sunucunuza eklemeyi, anahtarla bağlanmayı ve parola girişini güvenle kapatmayı.
- **Süre**: 8 dakika
- **Kimin için**: Sunucusuna parolasız ve daha güvenli girmek isteyen herkes; komut satırına yeni başlayanlar dahil.
- **Gerekenler**: Windows 10/11, macOS ya da Linux yüklü bir bilgisayar. Ek program gerekmez.

## 1. SSH anahtarı nedir, neden parola yerine?

SSH anahtarı birbirine bağlı iki dosyadan oluşur:

| Dosya | Örnek ad | Ne yapılır |
| --- | --- | --- |
| **Özel anahtar** (private key) | `id_ed25519` | Yalnız sizin bilgisayarınızda kalır. Kimseye verilmez, hiçbir yere yapıştırılmaz. |
| **Açık anahtar** (public key) | `id_ed25519.pub` | Sunucuya konur. Paylaşılması güvenlidir. |

Sunucu, bağlanan kişinin özel anahtara sahip olduğunu matematiksel olarak doğrular; ağ üzerinden parola gitmez. Bu yüzden parola deneme saldırıları (brute force) işe yaramaz. İnternete açık bir sunucuda yapabileceğiniz en etkili güvenlik önlemlerinden biridir.

## 2. Anahtar oluşturma

Windows 10/11, macOS ve Linux'ta `ssh-keygen` aracı hazır gelir. Komut her üç sistemde aynıdır.

1. Terminali açın:
  - **Windows:** Başlat menüsünde **PowerShell** ya da **Terminal**.
  - **macOS:** **Uygulamalar → İzlenceler → Terminal**.
  - **Linux:** Terminal uygulamanız.
2. Şu komutu çalıştırın (e-posta yalnız anahtara not olarak eklenir): bash`ssh-keygen -t ed25519 -C "ad.soyad@ornekfirma.com"`
3. Kaydedilecek yer sorulunca **Enter**'a basarak varsayılanı kabul edin (`~/.ssh/id_ed25519`; Windows'ta `C:\Users\<kullanıcı>\.ssh\id_ed25519`).
4. **Parola (passphrase)** sorulduğunda bir parola belirleyin. Bilgisayarınız çalınsa bile anahtar bu parola olmadan kullanılamaz. Otomasyon için ayrı, parolasız bir anahtar oluşturabilirsiniz.
5. Açık anahtarınızı ekrana yazdırın: bash`cat ~/.ssh/id_ed25519.pub` Windows PowerShell'de: powershell`Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub` Çıktı tek satırdır ve şöyle görünür: text`ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIExampleKeyOnly ad.soyad@ornekfirma.com`

> **Bilgi**
> 
> `ed25519` kısa, hızlı ve güncel bir anahtar türüdür; önerimiz budur. Eski bir sistem bunu desteklemiyorsa `ssh-keygen -t rsa -b 4096` ile RSA anahtarı oluşturun. Gyro sipariş ekranı `ssh-ed25519`, `ssh-rsa`, `ecdsa-sha2-nistp256/384/521` ve donanım anahtarı (`sk-ssh-ed25519@openssh.com`) türlerini kabul eder.

## 3. Açık anahtarı sunucuya koyma

### 3.1 Yeni bulut sunucu siparişinde (en kolay yol)

1. Gyro Bulut sipariş sayfasında **SSH açık anahtarı (isteğe bağlı)** kutusunu bulun.
2. `id_ed25519.pub` dosyasının içeriğini, baştan sona tek satır olarak yapıştırın.
3. Siparişi tamamlayın. Sunucu hazır olunca root kullanıcısıyla doğrudan, parolasız girersiniz.

![Açık anahtarın (.pub dosyası) tamamını bu alana (1) yapıştırın. Özel anahtarınızı hiçbir yere yapıştırmayın.](https://www.gyrohosting.com/resources/uploads/bilgi-merkezi/D03-01-tr.webp)

Sunucuyu anahtarla açtıysanız root parolası üretilmez; panelde **İşletim Sistemini Yeniden Kur** yaptığınızda da giriş aynı anahtarla olur.

### 3.2 Çalışan bir sunucuya (Gyro Bulut, Türkiye VDS ya da fiziksel sunucu)

Şu an parolayla girebildiğiniz bir sunucuya anahtarınızı eklemek için:

- **macOS / Linux:** bash`ssh-copy-id root@203.0.113.10`
- **Windows PowerShell** (`ssh-copy-id` yoktur, tek satırda aynı işi yapar): powershell`Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@203.0.113.10 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"`

Komut bir kez root parolasını sorar; sonraki girişler anahtarla olur.

### 3.3 Paneldeki "SSH Anahtarları" aracı ne işe yarar?

Gyro Bulut hizmet sayfasında **Yönetim → SSH Anahtarları** aracına en çok 10 açık anahtar ekleyebilirsiniz. Bu anahtarlar **Kurtarma Modu**'nda kullanılır: sunucuyu kurtarma sistemiyle başlattığınızda bu anahtarlarla girersiniz. Çalışan sunucunuzun içindeki `authorized_keys` dosyasını değiştirmez; sunucuya anahtar eklemek için 3.2'deki yolu kullanın.

## 4. Anahtarla bağlanma

```
ssh root@203.0.113.10
```

Birden fazla anahtarınız varsa hangisinin kullanılacağını belirtin:

```
ssh -i ~/.ssh/id_ed25519 root@203.0.113.10
```

Her seferinde IP yazmamak için `~/.ssh/config` dosyasına kısa bir ad ekleyin:

```
Host web1
    HostName 203.0.113.10
    User root
    IdentityFile ~/.ssh/id_ed25519
```

Artık yalnız `ssh web1` yazmanız yeterli.

> **Bilgi**
> 
> PuTTY kullanıyorsanız PuTTY kendi `.ppk` biçimini ister. **PuTTYgen** ile `id_ed25519` dosyanızı açıp **Save private key** ile `.ppk` olarak kaydedin. Windows'taki yerleşik `ssh` komutunu kullanırsanız dönüştürmeye gerek yoktur.

## 5. Parola girişini kapatma (önerilir)

Anahtarla girişin çalıştığından emin olduktan sonra parolayla girişi kapatın:

1. Sunucuda SSH ayar dosyasını açın: `nano /etc/ssh/sshd_config`
2. Şu satırları bulun ya da ekleyin: text`PasswordAuthentication no PermitRootLogin prohibit-password`
3. Ayarı denetleyip SSH'ı yeniden başlatın: bash`sshd -t && systemctl restart ssh` AlmaLinux, Rocky Linux, CentOS Stream ve Fedora'da servis adı `sshd`'dir: `systemctl restart sshd`.

> **Dikkat**
> 
> Açık SSH oturumunuzu kapatmadan, **yeni bir terminal penceresinden** anahtarla bağlanmayı deneyin. Bağlanamıyorsanız eski oturumdan ayarı geri alın. Tamamen kilitlenirseniz Gyro Bulut'ta panelden **VNC Konsol** ile girip ayarı düzeltebilirsiniz.

## 6. Sorun giderme

| Belirti | Olası neden | Çözüm |
| --- | --- | --- |
| `Permission denied (publickey)` | Sunucuda açık anahtar yok ya da yanlış özel anahtar kullanılıyor | `ssh -v root@<IP>` ile hangi anahtarın denendiğine bakın; `-i` ile doğru dosyayı verin |
| `UNPROTECTED PRIVATE KEY FILE` | Özel anahtar dosyasının izinleri çok açık (macOS/Linux) | `chmod 600 ~/.ssh/id_ed25519` |
| Sipariş ekranında "SSH anahtarı geçersiz" | Özel anahtar ya da bölünmüş satır yapıştırıldı | `.pub` dosyasının tamamını tek satır olarak yapıştırın |
| **SSH Anahtarları** aracında "Bu SSH anahtarı başka bir hizmette kayıtlı" | Aynı açık anahtar başka bir Gyro Bulut hizmetinin **SSH Anahtarları** listesinde var | Bu hizmetin kurtarma modu için ayrı bir anahtar oluşturup ekleyin (`ssh-keygen -t ed25519 -f ~/.ssh/gyro_web2`). Sipariş ekranında aynı anahtarı kullanmak sorun değildir |
| `REMOTE HOST IDENTIFICATION HAS CHANGED` | Sunucu yeniden kuruldu ve parmak izi değişti | Beklediğiniz bir yeniden kurulumsa `ssh-keygen -R 203.0.113.10` ile eski kaydı silin |
| Her bağlantıda anahtar parolası soruluyor | Anahtar ajana eklenmemiş | macOS/Linux: `ssh-add ~/.ssh/id_ed25519`; Windows: `ssh-agent` hizmetini başlatıp `ssh-add` |

## 7. Sık sorulan sorular

**Özel anahtarımı kaybedersem ne olur?**

O anahtarla bir daha giremezsiniz. Yeni bir anahtar çifti oluşturun; Gyro Bulut'ta **Kurtarma Modu** ya da **VNC Konsol** ile sunucuya girip yeni açık anahtarı `authorized_keys` dosyasına ekleyin.

**Aynı anahtarı birden fazla sunucuda kullanabilir miyim?**

Evet. Açık anahtarınızı istediğiniz kadar sunucuya ekleyebilirsiniz; Gyro Bulut sipariş ekranında da aynı anahtarı birden fazla siparişte kullanabilirsiniz. Yalnız hizmet sayfasındaki **SSH Anahtarları** aracında (kurtarma modu) bir anahtar tek bir hizmete eklenebilir.

**Ekipte birden fazla kişi bağlanacak. Herkes aynı anahtarı mı kullanmalı?**

Hayır. Herkes kendi anahtarını oluştursun, her birinin açık anahtarını `authorized_keys` dosyasına ayrı satır olarak ekleyin. Biri ayrıldığında yalnız onun satırını silersiniz.

**Anahtar parolası (passphrase) zorunlu mu?**

Zorunlu değil ama önerilir. Otomasyon (CI, yedekleme betiği) için kullanılan anahtarlarda parola olmayabilir; bu anahtarları yalnız gereken sunucuya ve mümkünse kısıtlı bir kullanıcıya verin.

**Özel anahtarımı destek ekibine göndermem gerekir mi?**

Hayır, hiçbir zaman. Destek ekibimiz yalnız açık anahtara (`.pub`) ihtiyaç duyabilir.

> **Biliyor muydunuz?**
> 
> SSH anahtarıyla birlikte en etkili ikinci önlem, SSH portunu yalnız kendi IP'nize açmaktır. **Ağ Güvenlik Duvarı** ile bunu panelden, sunucuya dokunmadan yaparsınız: [Ağ Güvenlik Duvarı rehberi](https://www.gyrohosting.com/bilgi-bankasi/makale/ag-guvenlik-duvari-rehberi).

## Sıradaki adım

- **Anahtarınız hazır:** [İlk bulut sunucunuzu 2 dakikada açın](https://www.gyrohosting.com/bilgi-bankasi/makale/ilk-bulut-sunucu) rehberiyle sunucunuzu anahtarla kurun.
- Sunucunuz yok mu? [Gyro Bulut paketleri](https://www.gyrohosting.com/bulut-sunucu)
