Linux Sunucusunda SSH Anahtar Tabanlı Kimlik Doğrulama
Tags: ssh, key, authentication, linux
Published: 2022-05-12 11:48:34

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1r2zfbqlkp91cjx5cot4.png)
 

**SSH** , sunucuları yönetmek ve onlarla iletişim kurmak için kullanılan şifreli bir protokoldür. Bir Linux sunucusuyla çalışırken, genellikle zamanımızı sunucuya **SSH** aracılığıyla bağlı bir terminalde geçiriyoruz.

Bir **SSH** sunucusunda oturum açmanın birkaç farklı yolu olsa da bu yazımda **SSH** anahtarlarını ayarlamayı ele alacağım. **SSH** anahtarları, sunucumuzda oturum açmanın son derece güvenli bir yolunu sağlar.

**SSH** anahtar çiftleri, bir istemcinin kimliğini bir SSH sunucusunda doğrulamak için kullanılabilen, kriptografik olarak güvenli iki anahtardır. Her anahtar çifti, bir **_Public_** anahtar ve bir **_Private_** anahtardan oluşur. Private anahtar kullanıcı (istemci,client) tarafından tutulur ve kesinlikle gizli tutulmalıdır. Private anahtarın herhangi bir şekilde ele geçirilmesi, saldırganın ek kimlik doğrulama olmaksızın ilişkili public anahtarla yapılandırılmış sunucularda oturum açmasına olanak tanır. İlişkili public anahtar, herhangi bir olumsuz sonuç olmadan özgürce paylaşılabilir. Public anahtar, yalnızca private anahtarın şifresini çözebileceği mesajları şifrelemek için kullanılabilir . Bu özellik, anahtar çiftini kullanarak kimlik doğrulamanın bir yolu olarak kullanılır.


## Adım 1 — SSH Anahtarları Oluşturma

Sunucumuza SSH anahtar kimlik doğrulamasını yapılandırmanın ilk adımı, yerel bilgisayarımızda bir SSH anahtar çifti oluşturmaktır. Bunu yapmak için **ssh-keygen** komutu varsayılan olarak 3072 bitlik bir RSA anahtar çifti oluşturacaktır. 

İlk olarak yerel bilgisayarımızda şunu yazarak bir SSH anahtar çifti oluşturalım:

```
$ ssh-keygen
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ra2ubysymnw2oamlqmsa.png)
 

## Adım 2 — SSH Public Anahtarını Sunucuya Kopyalama

#### - Yöntem 1 (Otomatik)

> Public anahtarımızı **ssh-copy-id** yöntemiyle basit bir şekilde hangi sunucuya istiyorsak onun bilgilerini girerek göndereceğiz. **user_name@server_ip_address**

```
$ ssh-copy-id user_name@server_ip_address
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/030z9g76gw4urdjvo06m.png)
 

#### - Yöntem 2 (Manuel)

> Public anahtarımızı görmek için **id_rsa.pub** dosyasına gidiyoruz. Ve anahtarı kopyalıyoruz.

```
$ cat ~/.ssh/id_rsa.pub
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bm21d2rlbwld4bpdsgj0.png)
 

> Kopyaladığımız anahtarı istediğimiz sunucuya göndermek için o sunucuya geçiş yapıyoruz. Sunucunun **~/.ssh/authorized_keys** konumunda bulunan dosyayı metin editörüyle açıyoruz ve kopyaladığımız Public anahtarı buraya yapıştırıyoruz. Kaydedip çıkıyoruz.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bdlgwt73wt37pnwlbkjw.png)
 

## Adım 3 — SSH Anahtarlarını Kullanarak Sunucuda Kimlik Doğrulama

> Yukarıdaki adımları eksiksiz bir şekilde yaptığımıza göre SSH bağlantımızı test edebiliriz. Artık parola olmadan oturum açabiliyor olmamız lazım.

```
$ ssh user_name@server_ip_address
```

> Private anahtarınız için bir parola koymadıysanız hemen oturum açacaksınız. Anahtarı oluştururken Private anahtar için bir parola koyduysanız şimdi girmeniz gerekecek. Ben parola koymadığım için aşağıda görüldüğü gibi direkt giriş sağladım.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/924mrlglj7qm4hrbi1wx.png)

Artık, bir hesap parolası olmadan oturum açmanıza olanak tanıyan, sunucunuzda yapılandırılmış ve çalışan SSH anahtarı tabanlı kimlik doğrulamaya sahipsiniz :)