SSH üzerinden Raspberry Pi bilgisayarlarına kolay ve güvenli bağlanmanın en sık tercih edilen yolu açık anahtarlı şifreleme mimarisini kullanmaktır. Gerçekleştireceğimiz bu uygulamada parolasız olarak kuracağımız SSH bağlantısını güvenli hale getireceğiz. Bu başlıktaki uygulamamızda bir çift anahtar oluşturacağız ve bu anahtarları parola kullanmadan güvenli şekilde oturum açmak istediğimiz Raspberry Pi bilgisayarlarına yükleyeceğiz. Sırasıyla özel anahtar (private key) ve açık anahtar (public key) olarak üreteceğimiz bu anahtar çiftinin ilkini bağlanmak istediğimiz Raspberry Pi’a diğerini ise SSH oturumu açmak isteyen Raspberry Pi’a yükleyeceğiz.
Günümüzde HTTPS’in güvenlik alt yapısını sağlayan SSL ve PGP gibi meşhur teknolojilerin de kullandığı açık anahtarlı şifreleme mimarisine göre; açık anahtar serbestçe herkese dağıtılabilir ve bu anahtarla şifrelenen bilgiyi sadece özel anahtar çözebilir. Örneğin; birisine gizli bir mesaj göndermek istiyorsanız, o kişinin herkes ile paylaştığı açık anahtarını kullanarak bu mesajı şifreleyin ve herkesin görebileceği bir yere asın. Şifreli mesajı sadece açık anahtarın eşi olan özel anahtara sahip olan kişi çözebilir.
Açık anahtar mimarisinden kısaca bahsettikten sonra, dilerseniz bu anahtarları nasıl üreteceğimize ve Raspberry Pi’larımızı nasıl yapılandıracağımıza bakalım. Öncelikle üzerinde SSH servisi çalışan iki adet Linux bilgisayarına ihtiyacımız olacak. Parolasız SSH oturumu açmak isteyen bilgisayarımızın adı PiA, üzerinde SSH oturumu açacağımız bilgisayarın adı da PiB olsun. PiA makinesi üzerinde ssh-keygen aracını aşağıdaki gibi çalıştıralım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
pi@pia:~ $ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/pi/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/pi/.ssh/id_rsa. Your public key has been saved in /home/pi/.ssh/id_rsa.pub. The key fingerprint is: SHA256:8sySyH36MDxChRhaCIsLy6xgGzn1yr5b4og0WsH0WrU pi@cell-rasp The key's randomart image is: […] |
ssh-keygen aracı, ilk olarak özel (id_rsa) ve açık (id_rsa.pub) anahtarların kaydedileceği dosyanın adını soracak ve bunları varsayılan olarak /home/pi/.ssh dizinine kaydedecektir. Dilerseniz özel anahtarınızı bir parola girerek koruyabilirsiniz. Bu durumda, PiB makinesi üzerinde oturum açabilmek için bu parolayı girmeniz gerekecek. Bu özellik PiB’yi PiA’ya gerçekleştirilecek olası yetkisiz erişimlerden korumak için ek bir güvenlik sağlar. Parola kullanmamak için Enter tuşu ile boş geçebilirsiniz. PiA üzerinde oluşturulan anahtarları ve içeriklerini aşağıdaki gibi görüntüleyebilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
pi@pia:~ $ cd /home/pi/.ssh/ pi@pia:~/.ssh $ ls -la total 20 drwx------ 2 pi pi 4096 Jan 9 12:40 . drwxr-xr-x 20 pi pi 4096 Jan 9 12:00 .. -rw------- 1 pi pi 1679 Jan 9 12:44 id_rsa -rw-r--r-- 1 pi pi 394 Jan 9 12:44 id_rsa.pub -rw-r--r-- 1 pi pi 222 Jul 27 08:24 known_hosts pi@pia:~/.ssh $ cat id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/1ESyKaT+UmJD2BOLSDaK9geBd63H7vnQYeLjFWK5BEAILsG4crG/LHShDMop+311DN8JosKLlcbQIAZuOy19OEkmgnY9meoufJk0LXKNQAU+8iF4C0didadneu/wMHo7Yt1Vca1M0DoFEutUomgZAbBl7CzDN3SnngvFq0+fc8CEnkx5szsogUHzAa+O4MODUczM6KShgllnhntWMI2JoansTaENznoGrML2Qrc+W+0UbmNcTmpHS7Ji9ETu4gkdB2lMOCKlM1j9Gyj+FdUH5SVZQBbDdTu+ywYQ50POYyHItJfR+Z6OAmxDKe1dIPNeVLBFF9JqQMbMUD87cFVP pi@pia |
Şimdi de oluşturduğumuz açık anahtarı PiB’ye yüklemeye geldi. Bunun için ssh-copy-id aracından faydalanacağız. Araç PiB üzerinde oturum açarak PiA’nın açık anahtarını PiB’nin yetkili anahtarlar listesine ekleyecek. Bu liste PiB üzerinde ~/.ssh/authorized_keys dosyasında tutulur. Tabi, bunun gerçekleşebilmesi için bir kereliğine PiB’nin SSH parolasını girmeniz istenecek. Aşağıdaki komutda PiB bilgisayar adı (hostname) yerine PiB’nin IP adresini de kullanabilirsiniz. Bu işlemi alternatif olarak kopyala yapıştır yöntemiyle de yapabilirsiniz. Yukarıda çıktısı gözüken id_rsa.pub dosyasının içeriğini PiB’nin ~.ssh/authorized_keys dosyası içine yerleştirmeniz yeterlidir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
pi@pia:~/.ssh $ ssh-copy-id pi@pib.local /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/pi/.ssh/id_rsa.pub" /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 pi@pib.local's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'pi@pib.local'" and check to make sure that only the key(s) you wanted were added. |
Yukarıdaki ekran çıktısında 1 adet anahtarın PiB’nin yetkili anahtar dosyasına eklendiği gözüküyor. Artık bundan sonra, PiA üzerinden PiB’de SSH oturumu açmak için basitçe şu komutu verebilirsiniz. Parola girmeniz istenmeden otomatik olarak SSH oturumu açılacaktır.
1 2 3 |
pi@pia:~ $ ssh pi@pib.local pi@pib:~ $ |
ssh-copy-id aracını ağınız üzerindeki diğer Linux/Raspberry Pi bilgisayarlarında da otomatik olarak SSH oturumu açmak için ayrı ayrı çalıştırabilirsiniz.