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 rsa
1
Generating public/private rsa key pair.
2
Enter file in which to save the key (/home/admin/.ssh/id_rsa):
3
Enter passphrase (empty for no passphrase):
4
Enter same passphrase again:
5
Your identification has been saved in /home/admin/.ssh/id_rsa.
6
Your public key has been saved in /home/admin/.ssh/id_rsa.pub.
7
The key fingerprint is:
8
a1:e8:fa:11:5d:cf:b9:ed:a4:e4:30:6e:a3:9e:ba:ed admin@solidnic
9
The 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 2m
2
PermitRootLogin without-password
3
4
. . .
5
6
# Change to yes to enable built-in password authentication.
7
PasswordAuthentication 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