Narweb.net Blog

Ubuntu 20.04’te SSH Keys (Anahtarları) Nasıl Oluşturulur ve Kullanılır?

Giriş

SSH Keys

SSH veya secure shell, sunucuları yönetmek ve onlarla iletişim kurmak için kullanılan şifreli bir protokoldür. Bir Ubuntu sunucusuyla çalışırken, zamanınızın çoğunu sunucunuza SSH aracılığıyla bağlı bir terminal oturumunda geçirme ihtimaliniz vardır.

Bu kılavuzda, bir Ubuntu 20.04 kurulumu için SSH keys (anahtarlarını) kurmaya odaklanacağız. SSH keys (anahtarları), sunucunuzda güvenli bir şekilde oturum açmanızı sağlar ve tüm kullanıcılar için önerilir.

1. Adım – SSH Keys (Anahtar Çiftini) Oluşturma

İlk adım, istemci makinede (genellikle bilgisayarınızda) bir SSH Keys (anahtar çifti) oluşturmaktır:

ssh-keygen

Varsayılan olarak ssh-keygen’in en son sürümleri, çoğu kullanım durumu için yeterince güvenli olan 3072 bit RSA anahtar çifti oluşturur (daha büyük bir 4096 bit anahtar oluşturmak için isteğe bağlı olarak -b 4096 bayrağını iletebilirsiniz).

Komutu girdikten sonra aşağıdaki çıktıyı görmelisiniz:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/kullanici/.ssh/id_rsa):

SSH keys çiftini ana dizininizdeki .ssh/ alt dizinine kaydetmek için enter tuşuna basın veya alternatif bir yol belirtin.

Daha önce bir SSH keys oluşturduysanız, aşağıdaki istemi görebilirsiniz:

/home/kullanici/.ssh/id_rsa already exists.
Overwrite (y/n)?

Diskteki anahtarın üzerine yazmayı seçerseniz, artık önceki anahtarı kullanarak kimlik doğrulaması yapamazsınız. Evet’i seçerken çok dikkatli olun, çünkü bu tersine çevrilemeyecek yıkıcı bir süreçtir.

Daha sonra aşağıdaki istemi görmelisiniz:

Enter passphrase (empty for no passphrase):

Burada isteğe bağlı olarak şiddetle tavsiye edilen güvenli bir parola girebilirsiniz. Bir parola, yetkisiz kullanıcıların oturum açmasını önlemek için ek bir güvenlik katmanı ekler.

Daha sonra aşağıdakine benzer bir çıktı görmelisiniz:

Your identification has been saved in /home/kullanici/.ssh/id_rsa
Your public key has been saved in /home/kullanici/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:/hk7MJ5n5aiqdfTVUZr+2Qt+qCiS7BIm5Iv0dxrc3ks kullanici@host
The key's randomart image is:
+---[RSA 3072]----+
|                .|
|               + |
|              +  |
| .           o . |
|o       S   . o  |
| + o. .oo. ..  .o|
|o = oooooEo+ ...o|
|.. o *o+=.*+o....|
|    =+=ooB=o.... |
+----[SHA256]-----+

Artık kimliğinizi doğrulamak için kullanabileceğiniz bir public (genel) ve private (özel) anahtarınız var. Sonraki adım, oturum açmak için SSH keys tabanlı kimlik doğrulamayı kullanabilmeniz için public keys (genel anahtarı) sunucunuza yerleştirmektir.

2. Adım – Public Key (Genel Anahtarı) Ubuntu Sunucunuza Kopyalama

Public Key (Genel anahtarınızı) Ubuntu ana bilgisayarına kopyalamanın en hızlı yolu, ssh-copy-id adlı bir yardımcı program kullanmaktır. Basitliği nedeniyle, varsa bu yöntem şiddetle tavsiye edilir. İstemci makinenizde kullanabileceğiniz ssh-copy-id yoksa, bu bölümde sağlanan iki alternatif yöntemden birini kullanabilirsiniz (şifre tabanlı SSH aracılığıyla kopyalama veya anahtarı manuel olarak kopyalama).

Public Key (Genel Anahtarı) ssh-copy-id Kullanarak Kopyalama

ssh-copy-id aracı birçok işletim sisteminde varsayılan olarak bulunur, bu nedenle yerel sisteminizde kullanılabilir durumda olabilir. Bu yöntemin çalışması için sunucunuza zaten parola tabanlı SSH erişiminizin olması gerekir.

Yardımcı programı kullanmak için, bağlanmak istediğiniz uzak ana bilgisayarı ve parola tabanlı SSH erişimine sahip olduğunuz kullanıcı hesabını belirtirsiniz. Bu, genel SSH keys (anahtarınızın) kopyalanacağı hesaptır.

Sözdizimi:

ssh-copy-id kullanici_adi@uzak_sunucu_adresi/IP

Aşağıdaki mesajı görebilirsiniz:

The authenticity of host 'x.y.z.t (x.y.z.t)' can't be established.
ECDSA key fingerprint is fd:fd:d3:f1:77:fe:73:84:e2:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Bu, yerel bilgisayarınızın uzak ana bilgisayarı tanımadığı anlamına gelir. Bu, yeni bir ana bilgisayara ilk kez bağlandığınızda gerçekleşir. Devam etmek için “evet” yazın ve ENTER tuşuna basın.

Ardından, yardımcı program daha önce oluşturduğumuz id_rsa.pub anahtarını bulmak için yerel hesabınızı tarar. Anahtarı bulduğunda, sizden uzak kullanıcının hesabının şifresini isteyecektir:

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
kullanici_adi@x.y.z.t's password:

Parolayı girin (güvenlik nedeniyle yazdıklarınız görüntülenmez) ve ENTER tuşuna basın. Yardımcı program, sağladığınız parolayı kullanarak uzak ana bilgisayardaki hesaba bağlanacaktır. Ardından ~/.ssh/id_rsa.pub anahtarınızın içeriğini uzak hesabın ana ~/.ssh dizinindeki yetkili_anahtarlar adlı bir dosyaya kopyalar.

Aşağıdaki çıktıyı görmelisiniz:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'kullanici_adi@x.y.z.t'"
and check to make sure that only the key(s) you wanted were added.

Bu noktada, id_rsa.pub anahtarınız uzak hesaba yüklenmiştir. 3. Adıma geçebilirsiniz.

SSH Kullanarak Public Key (Genel Anahtarı) Kopyalama

Kullanılabilir ssh-copy-id’niz yoksa ancak sunucunuzdaki bir hesaba şifre tabanlı SSH erişiminiz varsa, anahtarlarınızı geleneksel bir SSH yöntemini kullanarak yükleyebilirsiniz.

Bunu, yerel bilgisayarımızda genel SSH anahtarının içeriğini okumak için cat komutunu kullanarak ve bunu bir SSH bağlantısı aracılığıyla uzak sunucuya ileterek yapabiliriz.

Diğer taraftan, ~/.ssh dizininin mevcut olduğundan ve kullandığımız hesap altında doğru izinlere sahip olduğundan emin olabiliriz.

Daha sonra, aktardığımız içeriğin çıktısını bu dizinde authorized_keys adlı bir dosyaya verebiliriz. İçeriğin üzerine yazmak yerine eklemek için >> yönlendirme sembolünü kullanacağız. Bu, daha önce eklenen anahtarları yok etmeden anahtar eklememize izin verecektir.

Tam komut şöyle görünür:

cat ~/.ssh/id_rsa.pub | ssh kullanici_adi@uzak_sunucu_adi ya da IP"mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Aşağıdaki mesajı görebilirsiniz:

The authenticity of host 'x.y.z.t (x.y.z.t)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:71:82:a1:55:00:ad:d6:6d:23:fe.
Are you sure you want to continue connecting (yes/no)? yes

Bu, yerel bilgisayarınızın uzak ana bilgisayarı tanımadığı anlamına gelir. Bu, yeni bir ana bilgisayara ilk kez bağlandığınızda gerçekleşir. Evet yazın ve devam etmek için ENTER’a basın.

Ardından, uzak kullanıcı hesabı parolasını girmeniz istenecektir:

kullanici_adi@uzak_sunucu_adi ya da IP's password:

Şifrenizi girdikten sonra, id_rsa.pub anahtarınızın içeriği, uzak kullanıcının hesabındaki yetkili_anahtarlar dosyasının sonuna kopyalanır. Bu başarılı olduysa Adım 3’e geçin.

Public Key (Genel Anahtarı) Manuel Olarak Kopyalama

Sunucunuza şifre tabanlı SSH erişiminiz yoksa yukarıdaki işlemi manuel olarak tamamlamanız gerekecektir.

id_rsa.pub dosyanızın içeriğini, uzak makinenizdeki ~/.ssh/authorized_keys dosyasına manuel olarak ekleyeceğiz.

id_rsa.pub anahtarınızın içeriğini görüntülemek için bunu yerel bilgisayarınıza yazın:

cat ~/.ssh/id_rsa.pub

Anahtarın aşağıdaki gibi görünmesi gereken içeriğini göreceksiniz:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfkik3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@narweb

Kullanabildiğiniz herhangi bir yöntemi kullanarak uzak ana makinenize erişin.

Uzak sunucuda hesabınıza erişiminiz olduğunda, ~/.ssh dizininin var olduğundan emin olmalısınız. Bu komut, gerekirse dizini oluşturur veya zaten varsa hiçbir şey yapmaz:

mkdir -p ~/.ssh

Artık bu dizinde yetkili_anahtarlar dosyasını oluşturabilir veya değiştirebilirsiniz. id_rsa.pub dosyanızın içeriğini authorized_keys dosyasının sonuna ekleyebilir, gerekirse bu komutu kullanarak dosyayı oluşturabilirsiniz:

echo public_key_icerigi >> ~/.ssh/authorized_keys

Yukarıdaki komutta, public_key_icerigi yerel sisteminizde yürüttüğünüz cat ~/.ssh/id_rsa.pub komutunun çıktısıyla değiştirin. ssh-rsa AAAA…. ile başlamalıdır

Son olarak, ~/.ssh dizininin ve yetkili_anahtarlar dosyasının uygun izinlere sahip olduğundan emin olacağız:

chmod -R go= ~/.ssh

Bu, ~/.ssh/ dizini için tüm “grup” ve “diğer” izinleri tekrar kaldırır.

Bir kullanıcı hesabının anahtarlarını ayarlamak için root hesabı kullanıyorsanız, ~/.ssh dizininin root değil, kullanıcıya ait olması da önemlidir:

chown -R narweb:narweb ~/.ssh

Bu eğiticide, kullanıcımız narweb olarak adlandırılmıştır, ancak yukarıdaki komutta uygun kullanıcı adını değiştirmelisiniz.

Artık Ubuntu sunucumuzla şifresiz kimlik doğrulamayı deneyebiliriz.

3. Adım – SSH Anahtarlarını Kullanarak Ubuntu Sunucunuzda Kimlik Doğrulama ve Oturum Açma

Yukarıdaki prosedürlerden birini başarıyla tamamladıysanız, uzak hesabın şifresini sağlamadan uzak ana bilgisayarda oturum açabilmeniz gerekir.

Temel süreç aynıdır:

ssh narweb@uzak_sunucu_adresi ya da IP

Bu ana bilgisayara ilk kez bağlanıyorsanız (yukarıdaki son yöntemi kullandıysanız), şöyle bir şey görebilirsiniz:

The authenticity of host 'x.y.z.t (x.y.z.t)' can't be established.
ECDSA key fingerprint is fd:fd:dd:f9:17:fa:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Bu, yerel bilgisayarınızın uzak ana bilgisayarı tanımadığı anlamına gelir. “evet” yazın ve devam etmek için ENTER’a basın.

Özel anahtarınız için bir parola sağlamadıysanız, hemen oturum açacaksınız. Anahtarı oluştururken özel anahtar için bir parola sağladıysanız, bunu şimdi girmeniz istenecektir (güvenlik için tuş vuruşlarınızın terminal oturumunda görüntülenmeyeceğini unutmayın). Kimlik doğrulamasından sonra, Ubuntu sunucusunda yapılandırılmış hesapla sizin için yeni bir kabuk oturumu açılmalıdır.

Anahtar tabanlı kimlik doğrulama başarılı olduysa, parola kimlik doğrulamasını devre dışı bırakarak sisteminizin güvenliğini nasıl daha da artıracağınızı öğrenmek için devam edin.

4. Adım – Sunucunuzda Parola Doğrulamayı Devre Dışı Bırakma

SSH keys kullanarak hesabınızda parola olmadan oturum açabildiyseniz, hesabınız için SSH keys (anahtarı) tabanlı kimlik doğrulamasını başarıyla yapılandırdınız. Ancak, parola tabanlı kimlik doğrulama mekanizmanız hala etkindir, yani sunucunuz hala kaba kuvvet saldırılarına maruz kalmaktadır.

Bu bölümdeki adımları tamamlamadan önce, bu sunucudaki root hesap için yapılandırılmış SSH keys tabanlı kimlik doğrulamaya sahip olduğunuzdan veya tercihen bu sunucuda root olmayan bir hesap için yapılandırılmış SSH keys (anahtarı) tabanlı kimlik doğrulamanız olduğundan emin olun. sudo ayrıcalıklarına sahip sunucu. Bu adım, parola tabanlı oturum açma işlemlerini kilitleyecektir, bu nedenle, yönetici erişimi elde edebilmenizi sağlamak çok önemlidir.

Uzak hesabınızın yönetici ayrıcalıklarına sahip olduğunu onayladıktan sonra, uzak sunucunuzda root olarak veya sudo ayrıcalıklarına sahip bir hesapla SSH keys (anahtarlarıyla) oturum açın. Ardından, SSH arka plan programının yapılandırma dosyasını açın:

sudo nano /etc/ssh/sshd_config

Dosyanın içinde, PasswordAuthentication adlı yönergeyi arayın. Bu satır, satırın başında # ile yorumlanabilir. # işaretini kaldırarak satırın yorumunu kaldırın ve değeri hayır olarak ayarlayın. Bu, hesap parolalarını kullanarak SSH aracılığıyla oturum açma yeteneğinizi devre dışı bırakır:

/etc/ssh/sshd_config

. . .
PasswordAuthentication no
. . .

İşiniz bittiğinde dosyayı kaydetmeyi onaylamak için CTRL+X’e, ardından Y’ye ve son olarak nano’dan çıkmak için ENTER’a basarak dosyayı kaydedin ve kapatın. Bu değişiklikleri gerçekten etkinleştirmek için sshd hizmetini yeniden başlatmamız gerekir:

sudo systemctl restart ssh

Önlem olarak, yeni bir terminal penceresi açın ve mevcut oturumunuzu kapatmadan önce SSH hizmetinin düzgün çalışıp çalışmadığını test edin:

ssh narweb@uzak_sunucu_adi ya da IP

SSH hizmetinizin düzgün çalıştığını doğruladıktan sonra, mevcut tüm sunucu oturumlarını güvenle kapatabilirsiniz.

Ubuntu sunucunuzdaki SSH arka plan programı artık yalnızca SSH keys (anahtarı) tabanlı kimlik doğrulamaya yanıt veriyor. Parola tabanlı oturum açmalar devre dışı bırakıldı.

Bitirirken

Artık sunucunuzda, bir hesap parolası sağlamadan oturum açmanıza izin verecek şekilde yapılandırılmış SSH anahtarı tabanlı kimlik doğrulamanız olmalıdır.

Bu yazımız ile bağlantılı olan Ubuntu 20.04 sunucu kurulduktan sonra ilk yapılması gerekenler yazımızı da okumanızı öneririz.

Ayrıca SSH Keys hakkında ayrıntılı bilgiler içeren şu sayfayada bakabilirsiniz: SSH Keys

Exit mobile version