SSH Anahtarı Oluşturmak ve Sunucuya Yüklemek

SSH anahtarı (SSH key), bir kullanıcının özel anahtarıyla (private key) bir SSH sunucusuna bağlanması yöntemiyle ekstra güvenlik sağlamaktadır. Bu özel anahtarlar oluşturulurken, şifresiz bağlantı mümkün olabildiği gibi, özel anahtarı kullanmak için ekstra bir şifre kullanımı da tercih edilebilir.

Özel anahtarla birlikte bir de kamusal anahtar (public key) oluşturulur. Bağlanılmak istenen sunucu ya da sunuculara bu kamusal anahtarlar yüklenir. Birden fazla bilgisayara aynı anahtar ile bağlanılabilir.

SSH Özel Anahtarı Oluşturmak

SSH anahtarı oluşturmak istediğiniz bilgisayarda RSA algoritması ile aşağıdaki gibi özel anahtar oluşturulabilmektedir. Komutun çıktısında 2. satırda eğer isterseniz özel anahtarınız için farklı bir dosya konumu belirleyebilirsiniz. Buna gerek duymuyorsanız enter tuşuna basarak sonraki adıma geçebilirsiniz.

Eğer özel anahtarınızı ayrıca bir şifre ile koruma altına almak istiyorsanız, aşağıdaki çıktının 3. ve 4. satırlarında görülen bölümlerde şifre girmeniz gerekmektedir. Eğer şifrelemek istemiyorsanız iki adımı da enter tuşu ile geçebilirsiniz.

$ssh-keygen -t rsa1Generating public/private rsa key pair.2Enter file in which to save the key (/home/admin/.ssh/id_rsa): 3Enter passphrase (empty for no passphrase): 4Enter same passphrase again: 5Your identification has been saved in /home/admin/.ssh/id_rsa.6Your public key has been saved in /home/admin/.ssh/id_rsa.pub.7The key fingerprint is:8a1:e8:fa:11:5d:cf:b9:ed:a4:e4:30:6e:a3:9e:ba:ed admin@solidnic9The key's randomart image is:10+--[ RSA 2048]----+11|                 |12|                 |13|        o        |14|     o o + .     |15|    o o S +      |16|   . .     o     |17|    o   o o o    |18|   . o oo= +     |19|  ..+=Eo..o .    |20+-----------------+

Karşı Sunucuya Kamusal Anahtar Yüklemek

Sunucuya ssh-copy-id kullanarak anahtar yüklemek

SSH kamusal anahtarlarının karşı sunuculara yüklenmesi için hazırlanmış ssh-copy-id isimli bir araç bulunmaktadır. Sisteminizde bu araç yüklüyse aşağıdaki gibi kolayca karşı sunucuya anahtarınızı güvenli bir şekilde yükleyebilirsiniz. Aşağıdaki komutta, kullaniciadi yazan yere, anahtarınızı kurmak istediğiniz sunucudaki kullanıcı adınızı, sunucuadresi.com bölümüne de bağlanmak istediğiniz sunucunun varsa internet adresini ya da IP adresini yazmanız gerekmektedir.

$ssh-copy-id kullaniciadi@sunucuadresi.com

Bazı sunucularda ssh-copy-id programı yüklü olmayabilir. Bu durumda kullandığınız sunucuya bu aracı yüklemeniz ayrıca yüklemeniz ya da eğitselimizin bir sonraki adımındaki alternatif anahtar yükleme yöntemi olan elle yükleme yöntemini tercih etmeniz gerekebilir.

Sunucuya SSH Anahtarını Elle Yüklemek

Bağlanmak istediğiniz sunucuya kamusal anahtarınızı kendiniz de elle yükleyebilirsiniz.

Öncelikle oluşturduğunuz kamusal anahtarınızın verilerini kopyalamanız gerekmektedir. Kendi aşağıdaki komutu çalıştırmalı ve sonucunda aşağıdakine benzer görüntülenen çıktıyı kopyalamalısınız.

$cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA4Yk7n17hpvTZDgdx/VNbXbdAwB+qVq4IzyrfT72Nzuao/L7JyWox2mRfYtBlQ+rANloTXGXzTF3+chRRU16sxsnsOGqwnXs6oCX9/E4VQVxR80J7q7iawnj/7Yy7xkvIfBgiYMG2UKsiBfyyQq2KQL5kktzKZKmkKyOtsjMSA+/zzDGF7LyFcaozRhpq0w3EFvBiHo/4DQqvkJzxdllyn+lh+TxizBkKkwKiKHckaDM4chmo2jm32zM4tAfntIGK9/HlEYB/5B9fejDYXRd/7aiyfGeFX0Jw4OcsQiKAGiJxdUcgq+yprQ0s7iPJRHehR4Z3T0pkrlx/gI9inrE8qQ== admin@solidnic

SSH anahtarımızı yüklemek istediğimiz sunucuda aşağıdaki komutu çalıştırarak kullanıcı kök klasörümüzde .ssh klasörünü oluşturmalıyız.

$mkdir -p ~/.ssh

Oluşturduğumuz bu klasörün içinde authorized_keys isimli dosya oluşturup bu dosyayı alışkın olduğumuz bir metin editörü ile açıp içerisine daha önce kopyaladığımız kamusal anahtarımızı yapıştırarak kaydedeceğiz.

$vi ~/.ssh/authorized_keys

Eğer metin editörü kullanmayı bilmiyorsanız bu sayfadan terminal üzerinde metin editörü programlarının nasıl kullanıldığı hakkında detaylı bilgi edinebilirsiniz.

Oluşturduğumuz klasör ve dosyalara gerekli yetkileri aşağıdaki komutlarla yüklemeliyiz.

$chmod 700 ~/.ssh$chmod 600 ~/.ssh/authorized_keys

Diğer kullanıcıların kullanıcı klasörünüze yazma yetkisini güncellemek için aşağıdaki komutu çalıştırabilirsiniz.

$chmod go-w ~

Anahtar Kurulumu Yapılan Sunucuya Bağlanmak

SSH anahtarını karşı sunucuya başarıyla kurduktan sonra normal bir şekilde SSH bağlantısını aşağıdaki gibi sağlayabiliriz.

$ssh -l kullaniciadi sunucuadresi.com

Şifre İle Giriş Yapılmasını Engellemek

Anahtar kullanarak SSH sunucusuna başarılı olarak bağlandıktan sonra, dilersek ekstra güvenlik için anahtar kullanmadan klasik olarak şifreyle bağlantı kullanımını yasaklayabiliriz. Böylece bruteforce gibi yöntemlerle saldırganların şifre denemeleri yapmaları anlamsız kılınabilir.

Birçok FreeBSD ve Linux sürümünde, SSH sunucusunun konfigürasyon ayarları /etc/ssh/sshd_config dosyasında yer almaktadır. Kullandığınız işletim sistemine göre bu dosyanın konumu farklı olabilir.

Aşağıdaki komutta olduğu gibi konfigürasyon dosyasını düzenleyerek giriş izinlerini güncelleyebilirsiniz. Bu işlem, sistem yöneticisi olan root kullanıcısı ile yapılmalıdır.

#vi /etc/ssh/sshd_config

Sistem yöneticisi olan root kullanıcısının yalnızca SSH anahtarı ile sisteme giriş yapabilmesine izin vermek istiyorsanız, konfigürasyon dosyasındaki PermitRootLogin direktifinin yer aldığı satırının önünde eğer varsa # işaretini kaldırmalı bu satır aşağıdaki örneğin 2. satırında olduğu gibi PermitRootLogin without-password şeklinde düzenlenmelidir. Böyle bir satır yoksa boş bir satıra bu ayarı ekleyip konfigürasyon dosyasını kaydetmeliyiz.

1#LoginGraceTime 2m2PermitRootLogin without-password3 4. . .5 6# Change to yes to enable built-in password authentication.7PasswordAuthentication no

Tüm kullanıcılar için şifre ile girişin kapatılması için yukarıdaki örnekteki 7. satırdaki gibi PasswordAuthentication direktifi no değerini taşımalı ve varsa bu satırın önündeki # işareti kaldırılmalıdır.

Gerekli güncellemeler yapılıp konfigürasyon dosyası kaydedildikten sonra ayarların etkinleşmesi için SSH sunucusunun yeniden başlatılması gerekir. Birçok FreeBSD ve Linux işletim sistemi sürümünde aşağıdaki komutla SSH sunucusunun yeniden başlatılması mümkündür. İşletim sistemine göre bu işlem farklılık gösterebilir.

#service sshd restart

7/24 Müşteri Hizmetleri