# Sunucunuz için SSH anahtarlarını kurun

> Windows, macOS veya Linux'ta Ed25519 SSH anahtarı oluşturun, sunucunuza kopyalayın, şifresiz giriş yapın ve özel anahtarı parola ve agent ile koruyun.

Zorluk: Başlangıç\
Denendiği sistemler: Ubuntu 24.04 LTS, Ubuntu 26.04 LTS, Debian 12, Debian 13, Windows 11, macOS Tahoe 26

Bir SSH anahtar çifti iki parçadan oluşur: bilgisayarınızda kalan bir **özel anahtar** ve sunucuya koyduğunuz bir **açık anahtar**. Bağlandığınızda bilgisayarınız özel anahtara sahip olduğunu kanıtlar; ağda hiçbir şifre dolaşmaz ve saldırganların tahmin edebileceği bir şey kalmaz. Bu rehberde bir anahtar oluşturacak, sunucunuza kuracak ve test edeceksiniz.

## Başlamadan önce

- Sunucuya zaten giriş yapabiliyorsunuz; örneğin hoş geldiniz e-postasındaki şifreyle `root` olarak. Bkz. [Linux sunucunuza SSH ile bağlanın](/guides/connect-to-linux-server-ssh).
- Hangi kullanıcıyla giriş yapacağınızı biliyorsunuz. Örneklerde kullanıcı `alex`, sunucu `203.0.113.10`'dur; ikisini de kendi değerlerinizle değiştirin.
- Windows 10 ve 11'de OpenSSH istemcisi hazır gelir; macOS ve Linux'ta da bulunur.

## 1. adım: Bir anahtar çifti oluşturun

Bunu sunucuda değil, **kendi bilgisayarınızda** çalıştırın:

```bash
ssh-keygen -t ed25519 -C "alex@laptop"
```

`-C` değeri yalnızca anahtarı sonra tanımanıza yardımcı olan bir açıklamadır. Varsayılan dosyayı kabul etmek için Enter'a basın, ardından parolayı iki kez girin.

**Doğrulama:** ev dizininizdeki `.ssh` klasöründe artık iki dosya bulunur: `id_ed25519` (özel anahtar, asla paylaşmayın) ve `id_ed25519.pub` (açık anahtar). Parmak izini şu komutla görün:

```bash
ssh-keygen -lf ~/.ssh/id_ed25519.pub
```

Windows'ta klasör `C:\Users\Adiniz\.ssh` konumundadır; PowerShell bu komuttaki `~` işaretini de anlar.

## 2. adım: Açık anahtarı sunucuya kopyalayın

**macOS ve Linux**

`ssh-copy-id` şifrenizle bir kez giriş yapar ve anahtarı doğru dosyaya, doğru izinlerle ekler:

```bash
ssh-copy-id -i ~/.ssh/id_ed25519.pub alex@203.0.113.10
```
**Windows**

Windows'ta `ssh-copy-id` yoktur. Bunun yerine anahtarı PowerShell'den SSH üzerinden gönderin:

```powershell
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | ssh alex@203.0.113.10 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
```

İstendiğinde kullanıcının şifresini girin.
**Elle**

Sunucuda, anahtarı kabul edecek kullanıcıyla giriş yapmışken:

```bash
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
```

`id_ed25519.pub` dosyanızdaki tek satırı yapıştırın, kaydedin, ardından izinleri ayarlayın:

```bash
chmod 600 ~/.ssh/authorized_keys
```

`authorized_keys` dosyasındaki her satır bir açık anahtardır. Her satıra bir anahtar yazın ve oraya asla özel anahtar yapıştırmayın.

## 3. adım: Anahtarı test edin

**Yeni** bir terminal açın ve bağlanın:

```bash
ssh -i ~/.ssh/id_ed25519 alex@203.0.113.10
```

**Doğrulama:** istemci sunucu şifresini değil anahtarın parolasını sorar ve sizi içeri alır. Ayrıntısını görmek isterseniz `ssh -v alex@203.0.113.10` çalıştırın: `Authenticated to 203.0.113.10 ([203.0.113.10]:22) using "publickey".` gibi bir satır anahtarın kullanıldığını doğrular.

## 4. adım: Parolayı bir agent'a hatırlatın

**Windows**

`ssh-agent` servisi varsayılan olarak kapalıdır. PowerShell'de **yönetici olarak**:

```powershell
Get-Service ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
```

Ardından normal kullanıcınızla:

```powershell
ssh-add $env:USERPROFILE\.ssh\id_ed25519
```
**macOS**

Anahtarı agent'a ekleyin ve parolayı anahtar zincirinizde saklayın:

```bash
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
```
**Linux**

Çoğu masaüstü oturumu sizin için bir agent başlatır:

```bash
ssh-add ~/.ssh/id_ed25519
```

**Doğrulama:** `ssh-add -l` anahtarın parmak izini listeler ve yeni bağlantılar artık parola sormaz.

## 5. adım: Bir kısayol kaydedin (isteğe bağlı)

Bilgisayarınızdaki `~/.ssh/config` dosyasına bir kayıt ekleyin:

```text
Host myserver
    HostName 203.0.113.10
    User alex
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes
```

Artık `ssh myserver` yeterlidir. `IdentitiesOnly yes`, istemcinin yalnızca bu anahtarı sunmasını sağlar; çok sayıda anahtarınız olduğunda "Too many authentication failures" hatasını önler.

## PuTTY kullanıyorsanız

PuTTY kendi anahtar biçimini (`.ppk`) kullanır. **PuTTYgen**'i açın ve ya anahtar türü **EdDSA** (Ed25519) ile **Generate**'i seçin ya da mevcut OpenSSH anahtarınızı **Conversions › Import key** ile yükleyin. Bir parola belirleyin, ardından **Save private key**'i seçin. "Public key for pasting into OpenSSH authorized_keys file" kutusundaki metni 2. adımdaki gibi sunucudaki `authorized_keys` dosyasına kopyalayın. PuTTY'de **Open**'ı seçmeden önce `.ppk` dosyasını **Connection › SSH › Auth › Credentials** altında seçin ve oturumu kaydedin.

## Donanım güvenlik anahtarları

Bir FIDO2 güvenlik anahtarınız varsa yalnızca cihaz takılıyken ve dokunulduğunda çalışan bir anahtar oluşturabilirsiniz:

```bash
ssh-keygen -t ed25519-sk
```

Sunucuda OpenSSH 8.2 veya daha yeni bir sürüm çalışmalıdır; tüm güncel Ubuntu ve Debian sürümleri bu koşulu karşılar. Cihaz kaybolursa diye ikinci bir anahtar veya başka bir giriş yolu bulundurun.

## Sorun giderme

**Sunucu hâlâ şifre soruyor.** Anahtar kabul edilmedi. Sunucuda `~/.ssh` izninin `700`, `authorized_keys` izninin `600` olduğunu, ikisinin de kullanıcıya ait olduğunu ve anahtarın bölünmemiş tek bir satırda durduğunu kontrol edin. `ssh -v` istemcinizin hangi anahtarları sunduğunu gösterir.

**`Permission denied (publickey)`.** Şifreyle giriş zaten kapalı ve anahtar kabul edilmiyor. Başka bir yolla girin (hizmet sayfanızda görünüyorsa web konsolu) ve `authorized_keys` dosyasını düzeltin. Bkz. [SSH bağlantı sorunları](/guides/ssh-connection-problems).

**`WARNING: UNPROTECTED PRIVATE KEY FILE!`** Özel anahtar dosyanızı başka kullanıcılar okuyabiliyor. macOS ve Linux'ta `chmod 600 ~/.ssh/id_ed25519` çalıştırın. Windows'ta dosyanın Özellikler › Güvenlik sekmesinden diğer kullanıcıları kaldırın.

**`Too many authentication failures`.** Agent'ınız çok fazla anahtar sundu. 5. adımdaki gibi bu sunucu için `IdentitiesOnly yes` ve bir `IdentityFile` satırı ekleyin.

## Sonraki adımlar

- Şifre ve root girişlerini kapatın: [SSH sıkılaştırma](/guides/ssh-hardening).
- İlk saat kontrol listesini tamamlayın: [yeni bir Linux sunucuyu güvenli hale getirin](/guides/secure-a-new-linux-server).

## Sık sorulan sorular

### Hangi anahtar türünü oluşturmalıyım?

Ed25519. Kısa ve hızlıdır, tüm güncel OpenSSH sürümleri destekler. En az 3072 bit RSA'yı yalnızca Ed25519 kabul etmeyen eski sistemler için kullanın.

### Parola (passphrase) gerekli mi?

Öneririz. Parola olmadan özel anahtar dosyasını kopyalayan herkes sizin adınıza giriş yapabilir. SSH agent parolayı oturumunuz boyunca hatırlar; her bağlantıda değil yalnızca bir kez yazarsınız.

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

Evet. Açık anahtar istediğiniz kadar sunucuya eklenebilir. Birçok kişi her bilgisayar için ayrı bir anahtar kullanır; böylece kaybolan bir dizüstü bilgisayar için tüm anahtarları değiştirmek yerine yalnızca bir anahtarı her yerden kaldırmak yeterli olur.

### Özel anahtarımı kaybettim. Nasıl yeniden girerim?

Başka bir yolla giriş yapın; örneğin hâlâ izinliyse şifreyle ya da hizmet sayfanızda görünüyorsa web konsoluyla. Ardından yeni bir açık anahtar ekleyin ve authorized_keys dosyasından eski satırı silin. Hiçbir giriş yolunuz yoksa bir destek bildirimi açın.

### Sonrasında şifreyle girişi kapatmalı mıyım?

Evet, anahtarla girişin ikinci bir oturumda çalıştığını doğruladıktan sonra. SSH sıkılaştırma rehberimiz gereken ayarları tam olarak gösterir.

---

Kaynak: <https://hyperdc.com/tr/guides/getting-started/ssh-keys>\
Son güncelleme: 2026-10-09
