Uzaktaki Makineyi SSH Protokolü ile Yönetin
SSH Protokolü
SSH, yani Secure Shell, bir iletişim protokolüdür. Kendi makinenizden, başka bir makineye bağlanırken kullanılan güvenli bir protokol olması amacıyla geliştirilmiştir. Aynı isimle geliştirilen komut ise bu protokol yardımıyla uzaktaki bir makineye bağlanmanızı sağlar.
SSH olmadan önceki bağlantılar, maalesef güvenli değildir. Bu bağlantılarda, sizin bağlandığınız makineye bir başkası da bağlanabilmekteydi. Bir bilgisayar korsanının bu makineye bağlanması, sisteminize kalıcı hasarlar verme, bilgi sızıntısı yapma, fidye ve şantaja kadar varabilmesi anlamına gelir. Özellikle bir sunucu yönetiyorsanız bu, isteyeceğiniz en son şey olabilir.
SSH bağlantısını güvenli yapan şey kullandığı özel (private) ve açık (public) anahtarlardır.
Özel anahtar, gizli kalmalıdır. Bu anahtar, gönderilen verileri yalnızca sizin çözebilmeniz için üretilmiştir. Açık anahtarınız ise paylaşılabilirdir. Karşı taraf ya da sunucu, bu açık anahtara sahiptir.
Eşleşme sırasında SSH protokolü üzerinden bağlantı isteği gönderilir. Karşı taraf, rastgele bir metin dizisi (string) üretir ve bunu açık anahtar ile şifreler. Bu şifre ancak elinizdeki özel anahtar ile çözülebilmektedir. Şifreli mesajı yine SSH protokolü üzerinden gönderir ve mesajın şifrelenmemiş halini sizden geri ister. Özel anahtarınız ile çözdüğünüz metni gönderdikten sonra karşıdaki makine ile çalışmanıza izin verilecektir. Eğer metni çözemezseniz, özel anahtarınızın olmadığı anlaşılacak ve makinede çalışmanıza izin verilmeyecektir.
Bu nedenle özel anahtarınızı gizli tutmalısınız. Bir bilgisayar korsanı özel anahtarınızı ele geçirirse sizin yerinize karşı makineye bağlanabilir.
Siz karşı makineye bağlandıktan sonra istediğiniz işlemleri konsol üzerinden dilediğiniz şekilde gerçekleştirebilirsiniz. Özellikle sunucu yöneticileri için oldukça kullanışlıdır. Muhtemelen hiçbir zaman fiziksel olarak görmeyecekleri bir makineye uzaktan bağlanarak sunucu işlerini gerçekleştirebilirler.
SSH bağlantısı kurabilmek için önce ilgili hizmeti başlatmalısınız. Önce hizmetin durumunu kontrol edelim.
○ sshd.service - OpenSSH Daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled; preset: disabled)
Active: inactive (dead)
Ardından hizmeti başlatalım.
Hizmet başlatıldığında bu şekilde görünmelidir.
Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled; preset: disabled)
Active: active (running) since Sat 2023-07-15 20:36:14 +03; 38s ago
Main PID: 88148 (sshd)
Tasks: 1 (limit: 19000)
Memory: 2.0M
CPU: 4ms
CGroup: /system.slice/sshd.service
└─88148 "sshd: /usr/bin/sshd -D [listener] 0 of 10-100 startups"
Tem 15 20:36:14 Elagoht systemd[1]: Started OpenSSH Daemon.
Tem 15 20:36:14 Elagoht sshd[88148]: Server listening on 0.0.0.0 port 22.
Tem 15 20:36:14 Elagoht sshd[88148]: Server listening on :: port 22.
Ardından ip adresimizi öğrenmek için ifconfig
, yani interface configuration komutunun çıktısına bakabiliriz.
inet 192.168.1.103 netmask 255.255.255.0 broadcast 192.168.1.255
...
Bağlantı kurabilmek için ssh komutuna karşı makinedeki bir kullanıcının adı, kuyruklu a ve makinenin IP adresini parametre olarak vermelisiniz.
Makineye ilk defa bağlanıyorsanız, açık anahtarına güvenip güvenmediğinizi soran bir soru sizi karşılar. "Yes" yazarak onay verebilirsiniz.
... key fingerprint is SHA256:...
This key is not known by any other names
Are you sure you want to continue to connecting (yes/no/[fingerprint])?
Bağlantı doğrulanırsa, istediğiniz kullanıcının şifresi size sorulur ve giriş yapmış olursunuz.
Makineler arasında bu şekilde bağlantı kurup komutlarınızı çalıştırabilirsiniz. Ancak dosya kopyalamak için doğrudan bu komutu kullanamazsınız. Bunun için scp
kullanmalısınız. Bu komuta da ilgili makaleden ulaşabilirsiniz