Linux üzerinde SSH Key kurulumunu anlatmadan önce SSH sisteminin ne olduğundan bahsedelim. SSH (Secure Shell), güvenli veri iletimi amacıyla şifrelenmiş bir ağ protokolüdür.  SSH ile birbirine bağlanmış iki bilgisayar arasındaki veri aktarımı bu şifrelenmiş, güvenli ağ protokolü üzerinden yapılır. SSH aşağıda belirtilen temel  unsurları sağlar;

  • authentication / Kimlik denetimi
  • encryption / Şifreleme
  • Integrity / Bütünlük.

SSH temel tanımlar;

  • SSH1, Tatu Ylönen tarafından geliştirilen ilk orjinal SSH ürünü.
  • SSH-1 protokolü temel alınarak geliştirilmiştir. SSH2, Tatu Ylönen tarafından geliştirilen SSH-2 ürünü.
  • SSH protocol 1.SSH-2,
  • SSH protocol 2 . Günümüzde yaygın kullanımda olan ve kullanımıtavsiye edilen ssh sürümü. IETF SECSH çalışma grubu tarafından standartlarıbelirlenmiştir.

SSH bağlantı sağladığınızda, her bağlatı yenilendiğinde karşılaştığız şifre işlemini pratik bir şekilde çözmek, kolay ve güvenli bir tanımlama işlemi oluşturmak için bu yazıda SSH anahtarı nasıl oluşturacak ve doğrulayacağımıza anlatacağım.

OpenSSH Nedir?

OpenBSD Project tarafından açık kaynak olarak geliştirilmiş, ağ erişimi (ssh tunneling) aşamasında tüm trafiğin şirelenmesi, saldırılardan korunması için artırılmış güvenlik önlemleri, yeni yetenekler ve metodlar barındıran bir SSH protokolü versiyonudur. SSH, SCP, SFTP gibi bağlantı operasyonları, SSAdd, SSH-Keydign, SSH-Keyscan ve SSH-Keygen gibi anahtar yönetimi, SSHD, SFtp-Server ve SSH-Agent gibi server taraflı oluşumları kapsar. Sunucu birden fazla kişinin ya da aracın erişimine açılacağı durumlar için en güvenli yöntemdir.

Public Key Authentication

Bu yapıda, “gizli (private key)” ve onu tamamlayan “açık (public)” olmak üzere iki anahtar bulunur. Kullanıcı “gizli (private)” anahtarını bağlanmak için kullanacağı sistemde, “açık (public)” anahtarını da bağlanacağı sistemde bulundurur. Bağlantı sırasında bu iki anahtarın eşleşmesiyle, sisteme giriş yapılmış olur. Bu sayede sunucu şifreleri paylaşılmadan, sadece sisteme girmesi gereken kullanıcıların public keyleri eklenerek giriş izni verilebilir.

Önemli faydalarından biri de kullanıcı adı/şifre adımını ortadan kaldırması ve otomatik giriş yapılabilmesi sayesinde birden cok sunucuyu yönetmekteki güvenlik sorunlarını azaltmasıdır. Aynı zamanda uzaktan dosya transferi, otomatik yedekleme, scriptlerin çalıştırılması gibi adımları da güvenli bir şekilde gerçekleştirmenizi sağlar.

Anahtar oluşturulurken ayrıca gizli anahtar erişiminde de şifre (passphrase) kullanılabilir. Bu sayede ek güvenlik önlemleri alabilirsiniz. Şifre belirlendikten sonra SSH gizli anahtara erişmek istediğinde önce parola girişi yapmanız gerekir. OpenSSH içindeki SSH-agent aracıyla bellekte passprase saklama özelliği kolaylaştırılmıştır.

Aşağıdaki komutla bir SSH Key çifti oluşturulur. Bu anahtarlardan “açık (public key)” olanı bağlanılacak servera kaydedilecektir. Public key farklı sunuculara bağlanmak için dağıtılabilir. “Gizli (private key) ise bağlanacak kullanıcı tarafından saklanması ve public key’ i eşlediği için paylaşılmaması gereken anahtardır.

–Aşağıdaki komutu çalıştırdığım makinenin ip’si 192.168.100.11

ssh-keygen -t rsa

Bu komutu çalıştırdıktan sonra, sizden Private Key icin bir konum isteyecektir. Bu konumu default haliyle birakmak icin enter’ a basıp gecebilirsiniz. Daha sonra bir Private Key şifresi ister. Bu aşamada dilerseniz şifre kontrolü olmadan sadece iki anahtarın eşleşmesi yöntemiyle giriş yapabilir, ya da iki anahtar eşleştikten sonra bir de şifre tanımlayabilirsiniz. Artık private ve public anahtarlarınız oluşmuş durumda ve  anahtar karşılaştırmalarında kullanacağınız fingerprint etiketine dair onay mesajı alacaksınız.

Linux ssh-keygen

  • Private Key: /root/.ssh/id_rsa
  • Public Key: /root/.ssh/id_rsa.pub

Hepsi bu kadar. Artık paylaşılmak üzere açık anahtarımız hazır.

Açık Anahtarın Uzak Sunucuya Kaydedilmesi

Anahtarları oluşturduktan sonra authorized_keys isimli text dosyayı oluşturup, sunucuya bağlanma yetkisi olan public key’ leri bu text dosyasının içine atacağız.

Sunucunuzda oluşturduğunuz authorized_keys dosyasının içinde “ssh-rsa xxxxx” ile başlayan satır sizin public key’ inizdir. Bu sunucuya bağlanması gereken diğer kullanıcılar için de aynı dosyada alt satıra geçip “ssh-rsa” ile başlayarak public keyi kopyalayabilirsiniz. Burada dikkat edilmesi gereken konu public keyin tek satır halinde yazılması  gerektiğidir.

cat ~/.ssh/id_rsa.pub

Son aşamada ise  192.168.100.11 makinesinde oluşturduğumuz anahtarı, 192.168.100.12 makinesinde oluşturduğumuz veya hali hazırda var olan .ssh dizini altında authorized_keys adlı dosyaya aşağıdaki komutla ilave ediyoruz.

–Aşağıdaki komutu çalıştırdığım makinenin ip’si 192.168.100.11. Bu komuttan sonra 192.168.100.11 makinesinden 192.168.100.12 makinesine şifresiz girebilirim.

cat ~/.ssh/id_rsa.pub | ssh root@192.168.100.12 "cat >> ~/.ssh/authorized_keys"

Veya

Public anahtarınızı doğrudan uzak sunucunun authorized_keys dosyasına koyacak basit bir komut vardır.

ssh-copy-id root@192.168.100.12

Artık sunucunuz Private Key ile şifre sormadan bağlanmaya açılmıştır.

NOT : Gizli anahtarınızı sadece sizin okuyabileceğiniz şekilde yetkilendirme yapmanız (700: owner okuyabilir, yazabilir, çalıştırabilir, 600: owner okuyabilir, yazabilir) uygun olacaktır.

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa*

NOT :

    • -t anahtarın tipini belirler. rsa veya dsa kullan
    • -b kaç bitlik şifreleme yapılacağı
    • -f f parametresiyle oluşturacağımız anahtar için isim belirlememiz mümkün. Komutu sonrasında ~/.ssh/key-test.pub public key dosyasına sahip olacaksınız. Farklı erişimler için farklı dosyalar tanımlayabilirsiniz.
ssh-keygen -f ~/.ssh/key-test -t rsa

Algoritma ve Anahtar Boyutu Seçimi

  • rsa : RSA, bir asimetrik şifreleme algoritmasıdır. Asimetrik şifreleme yönteminde genel anahtar ve özel anahtar olmak üzere iki anahtar bulunur. Adında anlaşılabileceği gibi genel anahtar herkese açıktır.Özel anahtar ise kişiye özeldir ve sadece sahibi tarafından bilinir. Genel anahtar ile özel anahtar arasında matematiksel bağ bulunur ancak herhangi bir genel anahtardan özel anahtara ulaşmak imkansıza yakındır. Eski bir algoritmadır. Tavsiye edilen key boyutu en az 2048 bit, ancak 4096 daha uygun bir seçenek olacaktır. Birçok SSH client tarafından desteklenen RSA uzun vadede daha az güvenilir olarak nitelendirilmekte. RSA SSH protokol 1 için kullanılır. Aşağıda 4096 bit olarak anahtar oluşturmak için kullanabileceğiniz komutu iletiyorum.
ssh-keygen -t rsa -b 4096
  • dsa : DSA (Digital Signature Algorithm) Ağustos 1991’de National Institute of Standards and Technology (NIST) tarafından sayısal imza standardı olarak tasarlanmıştır. DSA algoritması da, RSA gibi açık anahtarlı bir kriptografik algoritmadır. Anahtar boyutu olarak 1024 kullanılabilir. Artık desteklenmemektedir. DSA hem SSH protokol 1 hem de SSH protokol 2 için kullanılabiliyor.Aşağıda DSA algoritması üzerinden anahtar üretmek için kullanabileceğiniz komutu iletiyorum.
ssh-keygen -t dsa
  • ecdsa : Elliptic Curve Digital Signature Algorithm baş harflerinden oluşan ECDSA, Amerika Birleşik Devletleri tarafından günümüzde kullanılan standardı ifade etmekte. Güncel uygulamalar için oldukça güvenilir olduğu belirtilen algoritma 3 anahtar boyutunu desteklemekte; 256, 384 ve 521 bit. Özellikle tavsiye edilen 521 bitlik kullanım. Güncel bir çok SSH client tarafından desteklenmekte. Aşağıda 521 bit anahtar üretmek için kullanabileceğiniz kodu iletiyorum.
ssh-keygen -t ecdsa -b 521
  • ed25519 : OpenSSH tarafından oluşturulmuş yeni bir algoritma olan ed25519 günümüzde sınırlı bir desteğe sahip, bu nedenle pek tavsiye edilmemekte. Aşağıda kullanabileceğiniz komutu iletiyorum.
ssh-keygen -t ed25519

Mustafa Bektaş Tepe

İyi Çalışmalar

Loading