SSH Keygen Nedir?

Ssh-keygen, SSH için yeni kimlik doğrulama anahtar çiftleri oluşturmaya yönelik bir araçtır. Bu tür anahtar çiftleri, oturum açma işlemlerini, tek oturum açmayı ve ana bilgisayarların kimliğini doğrulamak için kullanılır.

Ansible ssh-keygen için resmi döküman sayfasına bakınız:

https://docs.ansible.com/ansible/latest/collections/ansible/builtin/ssh_connection.html

ansible ssh anahtarı oluşturulması 

Ssh anahtarımızı ansible kuracağımız sunucu üzerinde oluşturacağız. Putty üzerinden ansible sunucumuza bağlanalım. Kullanıcının ev dizinine gidelim ve sunucu üzerinde ssh key'i oluşturmak için aşağıdaki komut satırını çalıştıralım.

cd ~
ssh-keygen -t ed25519 -C “ansible key”

Yukarıdaki komut ile bir ssh anahtarı oluşturmasını, tip olarak ed25519 kullanılmasını ve bilgi olarak ansible key yazmış olduk.

Komut satırını yürüttükten sonra, bize anahtarı nerde oluşturacağını sordu, ister belli bir yol verebilir yada varsayılan olarak bırakabilirsiniz. Ben Enter tuşuna basarak varsayılan olarak bıraktım.

Şimdi ise bir passphrase istiyor, yani gizli anahtar parolası diyebiliriz. Eğer passphrase verirseniz bu ssh anahtarının kullanıldığı her yerde, passphrase belirtmeniz gerekir. Yani kapıyı kilitlediniz, anahtarıda bir kasaya koyup kilitlediğinizi  düşenebiliriz. Ben şu aşamada böyle bir ihtiyacım olmadığı için 2 kere Enter tuşuna basarak devam ediyorum.

Bulunduğum dizinde, .ssh adında gizli bir dizin oluştu. Dizinin içine gidelim ve listeleyelim.

cd .ssh
ll 

 İçeriğe baktığımız zaman private ve public anahtarları görebiliriz. Artık anahtarımız kullanılabilecek duruma geldi. Tek yapmamız gereken yöneteceğimiz sunuculara public anahtarı kopyalamaktır. 

file id
file id.pub 

Keylerimizin oluştuğu dizine gidelim ve public keyi kopyalamak için aşağıdaki komut satırını kendimize göre düzenleyip çalıştıralım. Uzak sunuculara key kopyalarken, uzak sunucularda home dizini olmasına dikkat ediniz. Uzak makinalarda update vb. yetki gerektiren işlemler yapacaksanız. Ansible için oluşturduğunuz kullanıcıları sudo veya wheel gruplarına dahil edin.

Ansible sunucusundaki kullanıcı adı ile uzak sunucudaki kullanıcı isimleri aynı ise sadece ip adresi girmeniz yeterlidir. 

cd ~/.ssh
ssh-copy-id -i id_ed25519.pub 10.106.246.60

ssh id ile kopyalama yapacağımızı -i ile girdi olarak kopyalanacak dosya yolunu, son olarak nereye kopyalayacağımızın adresini belirtmemiz yeterlidir. Komut satırını çalıştırdıktan sonra, yes seçeneği ile devam edip key'i kopyalayacağımız sunucunun parola bilgisi giriyoruz. Çıktıda bize key'in kopyalandığını ve kontrol etmemiz gerektiğini söylüyor.

Eğer ansible sunucusu üzerinde açtığınız kullanıcı hesabı, yöneteceğiniz sunucularda yok ise hata alacağınızı unutmayınız.  Eğer böyle bir hesap yok ise public anahtarı kopyalarken karşı sunucuya  kullanıcı@ip  şeklinde kopyalama işlemi başlatınız. Ancak çok fazla sunucu yönetecekseniz bu işlem sizi yoracaktır. O yüzden yukarıdaki yöntem ile devam edin.

ssh-copy-id -i id_ed25519.pub mehmet@10.106.246.60

Şimdi test etmek için public anahtarı kopyaladığım sunucuya bağlanmaya çalışıyorum. 

ssh 10.106.246.60 

Başarılı bir şekilde kopyalandığını test etmiş olduk. Şimdi exit komutunu çalıştırarak tekrar ansible sunucusuna gelip geri kalan sunuculara da public anahtarı kopyalayınız. Aynı işlemi Oracle Linux üzerindede yapıp public anahtarımı ekledim ve bağlandım.

Tabi birden fazla sunucunuz var ise, aşağıdaki gibi bir toplu halde kopyalama işlemi yapabilirsiniz. Yani 192.168.1.151-154 arası sunuculara kopyalama işlemi gerçekleştirecektir.

for i in {1..4}
> do
> ssh-copy-id root@192.168.1.15$i
> done

Eğer herhangi bir hata alırsanız, 

  • Sunucuların ayakta olup olmadığını ping ile kontrol ediniz.
  • Sanallaştırma uygulaması üzerinden Network Adaptörünüzü kontrol ediniz.
  • SSH servisinin çalıştığını doğrulayınız.
  • Sunucu üzerinde firewall açık ise ssh servisine izin verin.
  • Kullanıcıların home dizini olup olmadığını kontrol edin.
  • Kullanıcı ve parola bilgilerini kontrol ediniz.

Eğer ansible server sunucunuz ele geçirilirse ssh root@172.16.4.155 diye yazdıklarında ssh key yüzünden şifre sormadan direk saldırgan içeride olacaktır. Bunun için ssh key oluştururken şifre koymanız önemlidir.

Blog'a Dön