Temel SSH Komutları Nelerdir sorusuna geçmeden önce SSH nedir ve ne için kullanılır gibi konunun daha kolay anlaşılmasını sağlayan soruları cevaplandırmalıyız. İnternet ortamında güvenliğinizi sağlamazsanız yaptığınız işiniz, emeğiniz kötü niyetli insanlar tarafından bloke edilebilir. Tüm bilgiler ve hizmetler sunucular üzerinden akar. Örneğin bir web sitesi sahibi iseniz web sitenize ait bilgiler bir sunucuda saklanır. Web sitenizde bazı değişiklikler yapmak istediğinizde veya güncellemeler gerektiğinde sunucuya erişmeniz gerekmektedir. Ancak bir erişim kontrolünüz yoksa veya güvensiz bir ağdan erişiyorsanız sizinle birlikte kötü niyetli kişiler de sunucunuza erişebilir. Özellikle sunucuya uzaktan bağlantı yaparken güvenlik açıkları söz konusu olabilir. Bunun önüne geçmek için SSH geliştirilmiştir.
SSH Nedir? Ne için Kullanılır?
SSH (Secure Shell, Güvenli Kabuk), sunuculara uzaktan güvenli bir şekilde erişip kontrol edebileceğimiz uzaktan yönetim protokolüdür. Şifreleme algoritmaları ile birlikte çalışır. Simetrik, asimetrik ve hashing şifreleme algoritmalarını kullanır. Bu sayede sunucuya uzaktan erişim gerektiğinde, güvenli bir bağlantı sağlayabiliriz. Temel SSH komutları nelerdir diye arattığımızda kullanabileceğimiz komutları aşağıda listeledik. SSH bağlantısı, sunucu (host) ve istemci (client) bilgisayarlar arasında kurulur. SSH kurulumu, MacOS ve Linux'ta komut satırı ile yapılabilir. Windows üzerinde kullanılabilmesi için bir SSH istemcisinin kurulması gerekir. En yaygın olarak kullanılanı, PuttY'dir.
SSH Tünelleme
SSH Tünelleme (SSH Tunelling), Bir istemci ve sunucu arasında oluşturulacak uzaktan bağlantının ağ üzerinden bir tünel açılması ile oluşturulmasıdır. Bir VPN gibi düşünülebilir ancak, SSH verilerin transferini şifreleyerek yapar. Bu sayede gönderilen ve alınan textler görüntülenemez. Varsayılan olarak TCP '22' portu üzerinden tünel açılır. Ancak bu portu değiştirmek mümkündür. Tünel 3 farklı şekilde yapılır;
- Yerel Port Yönlendirme (Local Port Forwarding): En çok kullanılan tünelleme yöntemidir. Bir istemciden uzak bir sunucuya erişmek için SSH bağlantısı kurulur. Yerel bilgisayardaki localhost:80(örnek port) üzerinden uzaktaki sunucu işlemleri gerçekleştirilebilir. Örnek kullanım şekli linux için; ssh -f kullaniciadi@sunucuadi_veya_ip -L 3000: sunucuadi_veya_ip:22 ssh_sunucu_adresi bu komuttur. 3000 local port ve 22 uzaktaki sunucunun portudur. -L komutu yerel bağlantı yapma isteğimizi belirtir.
- Uzak Port Yönlendirme (Remote Port Forwarding): Yukardaki yöntemin tam tersidir. Uzak sunucudan yerel makineye bağlantıyı sağlar. Ters SSH bağlantısı da denilir. Yukarıdaki komut aynen yazılır. Değişen tek kısmı -L yerine -R yazılır. NAT veya Firewall denetimini atlatmak için de kullanılır.
- Dinamik Port Yönlendirme (Dynamic Port Forwarding): Yerel makine üzerinden bir soket açılır. SSH ile uzaktaki tüm hedeflere dağıtılır. Bağlantı yapmak için SOCKS Proxy protokolü kullanılır. Böylece uzaktaki makinenin internet ağı kullanılabilir. Bu yöntemin kullanılabilmesi için yerel makine tarayıcısında SOCKS Proxy ayarlarının yapılması gerekir. Linux komutu şu şekildedir; ssh -D 3000 ssh_sunucu_adresi
Bağlantıyı sağladığımıza göre temel SSH komutları nelerdir sorusunu yanıtlayarak yapabileceğimiz işlemleri görelim.
Temel SSH Komutları
Bazı işletim sistemlerinde komutlar farklılık gösterebilir. Aşağıdaki komutlar genel olarak linux için geçerlidir. SSH bağlantısı sağlandıktan sonra sunucu üzerinde bazı işlemleri yapabilmek için bu komutlara ihtiyaç vardır.
- ls: Bulunan dizindeki dosyaların isimlerini listeler.
- cd: Dizinler arası hareket etme komutudur.
- reboot: Yeniden başlatma komutudur.
- mkdir: Yeni dizin oluşturma komutudur.
- touch: Yeni dosya oluşturma komutudur.
- rm: Bir dosyayı kaldırma komutudur.
- cat: Bir dosyanın içeriğini gösteren komuttur.
- pwd: İçinde bulunduğumuz dizini gösterir. Tam dosya yolunu belirtir.
- cp: Dosyayı kopyalayan komuttur.
- mv: Dosyayı taşıyan komuttur.
- grep: Spesifik bir ifadeyi dosya veya satır içerisinde aramak için kullanılır.
- find: Dosya ve dizin aramak için kullanılır.
- vi/nano: Dosya içeriğini düzenleme komutudur.
- history: Kullanılan son 50 komutu gösterir.
- who: sunucuda kimlerin bağlı olduğunu gösteren komut.
- kill: PID numarası ile çalışan bir uygulamayı kapatma komutudur.
- killall: seçilen tüm uygulamaları kapatma komutudur.
- ps: Sunucuda çalışan uygulamaları gösterme komutudur.