SSH, sunucuları yönetmek ve onlarla iletişim kurmak için kullanılan şifreli bir protokoldür. Bir CentOS sunucusuyla çalışırken, zamanınızın çoğunu SSH aracılığıyla sunucunuza bağlı bir terminal oturumunda geçirmeniz olasıdır. Bu yazımızda CentOS7 üzerinde ssh keylerinin konfigurasyonuna odaklanacağız. SSH Keys, sunucumuzda oturum açmanın basit ve güvenli bir yolunu sağlar.
Öncelikle, istemci cihazımızdan (sunucuya bağlantı yaptığımız kendi yerel istemcimizde) bir key-pair oluşturmaktır:
ssh-keygen
Varsayılan olarak ssh-keygen, çoğu kullanım durumu için yeterince güvenli olan 2048 bitlik bir RSA key-pair oluşturur (daha büyük bir 4096 bit key oluşturmak için isteğe bağlı olarak -b 4096 etiketini belirtebilirsiniz).
Komutu girdikten sonra, aşağıdaki komut istemini görmelisiniz:
Generating public/private rsa key pair. Enter file in which to save the key (/your_home/.ssh/id_rsa):
key-pair ana dizininizdeki .ssh / alt dizinine kaydetmek veya alternatif bir yol belirtmek için ENTER’a basın.
Daha önce bir SSH anahtar çifti oluşturduysanız, aşağıdaki komut istemini görebilirsiniz:
/home/your_home/.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 geri döndürülemeyen sıkıntılı bir sürece dönüşebilir.
Daha sonra aşağıdaki çıktıyı 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ğıdaki çıktıyı görmelisiniz:
Your identification has been saved in /your_home/.ssh/id_rsa. Your public key has been saved in /your_home/.ssh/id_rsa.pub. The key fingerprint is: a1:74:2e:2a:5e:33:3e:a5:de:3e:14:11:52:b6:90:15 username@remote_host The key's randomart image is: +--[ RSA 2048]----+ | ..o | | E o= . | | o. o | | .. | | ..S | | o o. | | =o.+. | |. =++.. | |o=++. | +-----------------+
Artık kimlik doğrulaması için kullanabileceğiniz genel ve özel bir anahtarınız var. Bir sonraki adım, oturum açmak için SSH anahtar tabanlı kimlik doğrulamasını kullanabilmeniz için ortak anahtarı sunucunuza yerleştirmektir.
Public Key’i CentOS Serverimiza kopyalayalım
Genel anahtarınızı CentOS ana bilgisayarına kopyalamanın en hızlı yolu, ssh-copy-id adlı bir yardımcı program kullanmaktır. Basitliği nedeniyle, bu yöntem mümkünse şiddetle tavsiye edilir. İstemci makinenizde kullanabileceğiniz ssh-copy-id yoksa, bu bölümde sağlanan iki alternatif yöntemden birini kullanabilirsiniz (parola tabanlı SSH yoluyla kopyalama veya anahtarı manuel olarak kopyalama).
ssh-copy-id aracı, birçok işletim sistemine varsayılan olarak dahil edilmiştir, bu nedenle yerel sisteminizde mevcut olabilir. Bu yöntemin çalışması için, sunucunuza zaten parola tabanlı SSH erişiminizin olması gerekir.
Yardımcı programı kullanmak için, yalnızca bağlanmak istediğiniz uzak ana bilgisayarı ve parola SSH erişimine sahip olduğunuz kullanıcı hesabını belirtmeniz gerekir. Bu, genel SSH anahtarınızın kopyalanacağı hesaptır.
ssh-copy-id username@remote_host
The authenticity of host 'ips' can't be established. ECDSA key fingerprint is da:ca:d5:c4:57:ef:14:83:e2:44:10:ab:d6:6g:12:3e. Are you sure you want to continue connecting (yes/no)? yes
Bu sadece yerel bilgisayarınızın uzak ana bilgisayarı tanımadığı anlamına gelir. Bu, yeni bir ana bilgisayara ilk bağlandığınızda gerçekleşecektir. “Evet” yazın ve devam etmek için ENTER’a basın.
Ardından, yardımcı program daha önce oluşturduğumuz id_rsa.pub anahtarı için yerel hesabınızı tarayacaktır. Anahtarı bulduğunda, sizden uzaktaki kullanıcının hesabının şifresini soracaktır:
/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 username@ip's password:
Parolayı yazın (yazmanız güvenlik amacıyla görüntülenmeyecektir) ve ENTER’a basın. Yardımcı program, sağladığınız parolayı kullanarak uzak ana bilgisayardaki hesaba bağlanacaktır. Daha sonra ~ / .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 'username@ips'" and check to make sure that only the key(s) you wanted were added.
Bu işlem sonrası rsa.pub dosyamız karşı tarafa yüklendi. ssh user@ip değerlerini girerek giriş yaptığımızda erişimin sağlandığını göreceğiz.
Kullanılabilir ssh-copy-id yoksa, ancak sunucunuzdaki bir hesaba şifre tabanlı SSH erişiminiz varsa, geleneksel bir SSH yöntemini kullanarak anahtarlarınızı yükleyebilirsiniz.
Bunu, yerel bilgisayarımızdaki genel SSH anahtarının içeriğini okumak için cat komutunu kullanarak ve bunu uzak sunucuya bir SSH bağlantısı aracılığıyla ileterek yapabiliriz.
Öte yandan, ~ / .ssh dizininin var olduğundan ve kullandığımız hesap altında doğru izinlere sahip olduğundan emin olabiliriz.
Daha sonra üzerine boruladığımız içeriği, bu dizin içindeki yetkili_keys adlı bir dosyaya çıkarabiliriz. İçeriğin üzerine yazmak yerine eklemek için >> yönlendirme sembolünü kullanacağız. Bu, önceden eklenen anahtarları yok etmeden anahtarlar eklememize izin verecektir.
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
The authenticity of host 'ips' can't be established. ECDSA key fingerprint is xxxxxxx. 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 bağlandığınızda gerçekleşecektir. “Evet” yazın ve devam etmek için ENTER’a basın.
Daha sonra, uzak kullanıcı hesabı şifresini girmeniz istenmelidir:
username@ip's password:
Parolanızı girdikten sonra, id_rsa.pub anahtarınızın içeriği, uzak kullanıcının hesabının yetkili_keys dosyasının sonuna kopyalanacaktır.
SSH Anahtarlarını Kullanarak CentOS Sunucunuzda Kimlik Doğrulayın
Yukarıdaki prosedürlerden birini başarıyla tamamladıysanız, uzaktaki hesabın şifresi olmadan uzak ana bilgisayarda oturum açabilmelisiniz.
Temel süreç aynıdır:
ssh username@remote_host
Bu ana bilgisayara ilk kez bağlanıyorsanız (yukarıdaki son yöntemi kullandıysanız), şuna benzer bir şey görebilirsiniz:
The authenticity of host 'ip's' can't be established. ECDSA key fingerprint is xxxxxxx 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. Özel anahtarı oluştururken özel anahtar için bir parola sağladıysanız, şimdi parolayı girmeniz istenecektir. Kimlik doğrulamasından sonra, CentOS 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 sisteminizi nasıl daha da güvenli hale getireceğinizi öğrenmeye devam edin.
Sunucunuzda Şifre Doğrulamayı Devre Dışı Bırakın
Hesabınızda SSH kullanarak parola olmadan oturum açabildiyseniz, hesabınız için SSH anahtarı tabanlı kimlik doğrulamasını başarıyla yapılandırmışsınızdır. Ancak, parola tabanlı kimlik doğrulama mekanizmanız hala etkindir, bu da sunucunuzun kaba kuvvet saldırılarına hala açık olduğu anlamına gelir.
Bu bölümdeki adımları tamamlamadan önce, bu sunucudaki kök hesap için yapılandırılmış SSH anahtarı tabanlı kimlik doğrulamasına sahip olduğunuzdan veya tercihen bu bağlantıda kök olmayan bir hesap için yapılandırılmış SSH anahtar tabanlı kimlik doğrulamasına sahip olduğunuzdan emin olun. sudo ayrıcalıklarına sahip sunucu. Bu adım, parola tabanlı girişleri kilitleyecektir, bu nedenle yine de yönetici erişimine sahip olabilmenizi sağlamak çok önemlidir.
Uzak hesabınızın yönetici ayrıcalıklarına sahip olduğunu onayladıktan sonra, uzak sunucunuzda SSH anahtarlarıyla kök olarak veya sudo ayrıcalıklarına sahip bir hesapla oturum açın. Ardından, SSH arka plan programının yapılandırma dosyasını açın:
sudo vi /etc/ssh/sshd_config
Dosyanın içinde PasswordAuthentication adlı bir yönerge arayın. Bu yorumlanabilir. Metin eklemek için i tuşuna basın ve ardından satırın açıklamasını kaldırın ve değeri “no” olarak ayarlayın. Bu, hesap şifrelerini kullanarak SSH üzerinden giriş yapma olanağınızı devre dışı bırakır:
... PasswordAuthentication no ...
Değişiklikleri tamamladığınızda, değişiklikleri dosyaya yazmak ve çıkmak için ESC ve ardından: wq tuşlarına basın. Bu değişiklikleri gerçekten uygulamak için sshd hizmetini yeniden başlatmamız gerekiyor:
sudo systemctl restart sshd.service
Önlem olarak, yeni bir terminal penceresi açın ve bu oturumu kapatmadan önce SSH hizmetinin doğru çalışıp çalışmadığını test edin:
ssh username@remote_host
SSH hizmetinizi doğruladıktan sonra, tüm mevcut sunucu oturumlarını güvenle kapatabilirsiniz.
CentOS sunucunuzdaki SSH arka plan programı artık yalnızca SSH anahtarlarına yanıt veriyor. Parola tabanlı kimlik doğrulama başarıyla devre dışı bırakıldı.