amblem
Herkes İçin Linux
Furkan BaytekinFurkan Baytekin
22/09/2022
Rehber
DKKKitle Amblemi

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.

user@PC:~$ sudo systemctl status ssh.service
[sudo] password for furkan:
○ sshd.service - OpenSSH Daemon
 Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled; preset: disabled)
 Active: inactive (dead)

Ardından hizmeti başlatalım.

user@PC:~$ sudo systemctl start sshd.service

Hizmet başlatıldığında bu şekilde görünmelidir.

user@PC:~$ sudo systemctl status ssh.service
sshd.service - OpenSSH Daemon
 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.

user@PC:~$ ifconfig
enp11s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        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.

user@PC:~$ ssh furkan@192.168.1.106

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.

The authenticity of host '192.168.1.106 (192.168.1.106)' can't be established.
... 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.

furkan@192.168.1.106's password:
─[furkan]─[Elagoht]─[~]─[$]

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