Bu repository içerisinde TRT Genel Müdürlüğü Bilgi Teknolojilerinde yapılan staj günlerinin günlük açıklamaları bulunmaktadır. Umarım faydalı olur.
# Günler | Başlıklar |
---|---|
1 | Ubuntu ve Docker Kurulumu |
2 | 2. GÜN |
Ubuntu, Debian tabanlı bir Linux dağıtımıdır. Hem masaüstü hem de sunucu ortamlarında kullanılabilir. Açık kaynak kodlu olması, geniş bir kullanıcı ve geliştirici topluluğuna sahip olması, güvenlik ve güncelleme desteği sağlaması Ubuntu'yu popüler kılar.
Ubuntu, sunucu ortamlarında yaygın olarak tercih edilir çünkü:
- Stabilite ve Güvenilirlik: Ubuntu Server, kararlı ve güvenilir bir performans sunar.
- Geniş Yazılım Desteği: Çeşitli yazılım ve hizmetlerin Ubuntu üzerinde kolayca çalıştırılabilir olması.
- Güvenlik: Düzenli güvenlik güncellemeleri ve açık kaynak kodlu olması nedeniyle güvenlik açısından avantajlıdır.
- Topluluk Desteği: Ubuntu'nun geniş bir topluluğu ve kapsamlı dökümantasyonu vardır, bu da sorun çözmeyi kolaylaştırır.
Ubuntu Server'ı kuracağımız Sanal Sunucu ortamı olarak VirtualBox kurulumu gerçekleştirmemiz gerekmektedir. Kurulum Linki
Staj süreci boyunca stabillik ve ihtiyaç fazlası eklentilerle uğraşmamak amacıyla 22.04.04 sürümü kullanılmıştır.
Ubuntu Server kurulum ISO dosyasını Ubuntu 22.04.04 adresi üzerinden indirebilirsiniz. İndirmeniz gereken dosya adı "ubuntu-22.04.4-live-server-amd64.iso"
İndirmiş olduğumuz ISO dosyasının kurulumu için VirtualBox uygulmasını açıp Yeni
yazan butona tıklıyoruz.
Sunucumuza bir AD girip ISO Kalıbı
adlı yere indirdiğimiz ISO dosyasını ekliyoruz. Ardından ileri diyerek devam ediyoruz.
Kullanıcı adı
ve parola
bilgilerini giriyoruz. Ardından ileri diyerek devam ediyoruz.
Cihazınızın mevcut Ram ve İşlemci özelliklerine göre dilediğiniz özelliklendirmeyi sanal makineniz için yapabilirsiniz. Kurulumda kullanılan cihazın Teknik özellikleri:
- 16GB Ram
- i7 11800H
Sanal makinemiz için bu teknik özelliklere sahip bilgisayarda 4096MB
Ana bellek ve 2
Çekirdek fazlasıyla yeterli olacaktır.
Depolama olarak da mevcut sistemde 25GB alan yeterli olacaktır.
Yapmış olduğunuz yapılandırmaları kontrol ederek "BİTİR" demeniz kurulumu başarıyla sonlandıracaktır.
Kurmuş olduğunuz Sanal Makinenin ayarlarından AĞ
kısmına giderek sunucumuzun bağlantısını "Yalnızca-Anamakine Bağdaştırıcısı"
olarak ayarlayın.
Arık Ubuntu Serverimizi açabiliriz. Bizi karşılayacak ilk ekran Serverimizin dilini belirleyeceği ekrandır. Burada yapmamız gereken ENGLISH
seçeneğini seçmek ve Enter
a basmaktır.
Gelen ekranda klavyemizin dilini seçmemiz gerekmektedir. Burada Layout
yazan yerin üstüne gelip Enter
tuşuna basıyoruz.
Şimdi karşımıza Network ayarlarını yapılandıracağımız bölüm geldi. Ethernet kartımızı görüyoruz, ağ ayarlarını otomatik ve ya statik olarak yapılandırmamızı istiyor. Bu kısımda Done
diyerek otomatik yapılandırma yapmasınına izin veriyoruz.
Ubuntu güncellemelerini çekeceği Mirror adresini buradan ayarlayabilirsiniz. Olduğu gibi bırakarak ilerliyoruz.
Sunucumuz için ayarladığımız 25 GB disk bölümünü gördü. Farklı bir disk ayarladıysanız seçebilirsiniz. Varsayılan olarak bırakıp Done
ile devam ediyoruz.
Otomatik olarak yapılandırılan dosya sistemimizi Done ile kabul ediyoruz.
Gelen ekranda disk üzerindeki her şeyin silineceğini söyleyen uyarı ekranı geliyor. Continue ile devam ediyoruz.
Kullanıcı ekleme bölümü karşımıza gelecektir. Bu bölümde gerekli alanları doldurarak Ubuntu’da kurulum sonrası login olacağımız bir hesap oluşturuyoruz.
Windows Powershell veya Putty vb. araçlar ile uzaktan oturum açmak için Install OpenSSH server
işaretleyip Done
ile devam ediyoruz. SSH yüklemek istemiyorsak seçmeden devam edebiliriz ve sonrasında da SSH yükleyebiliriz.
Kurmak istediğimiz servislerin listesinin olduğu bir ekran karşımıza gelecektir. Bu bölümden kurmak istediğimiz servisleri seçip devam edebiliriz. Bu servisleri istediğimiz zaman da kurabiliriz. Burada Docker
ve Powershell
servislerini seçerek Done
diyerek devam ediyoruz.
Ubuntu Server ve gerekli servislerin kurulumları başlayacaktır. Bütün kurulumlar bittikten sonra Reboot Now
aktif olacaktır. Bu bölümün üstüne gelip Enter yaptığımızda sistemimiz yeniden başlayacaktır ve işletim sistemi kurulu olarak karşımıza gelecektir.
🎉🎉🎉 Artık nur topu gibi bir sunucumuz oldu! 🎉🎉🎉
Server açıldığında bizi ilk olarak kullanıcı bilgilerini girmemiz istenen ekran karşılıyor. Buraya gerekli bilgileri girdikten sonra bizi asıl çalışmlarımızı yürüteceğimiz terminal ekranı karşılıyor.
Tip
Ubuntu Server açıldığında varsayılan olarak Num lock OFF
modunda ayarlı oluyor.
Terminal üzerinde çalışırken bize sıkça lazım olacak komutlar aşağıda listeler halinde belirtilmiştir. Bu komutları iyi öğrenmeniz terminalde çalışabilmeniz için oldukça önemli.
ls
ls # Dizin içeriğini listelemek için
ls -la # Alt dizinlerle birlikte detaylı listeleme için
cd
cd /path/to/directory # Dizin değiştirmek
cd ~ # Ana dizine dönmek için
cd .. # Bir üst dizine geçmek için
pwd
pwd # Bulunduğunuz dizinin yolunu öğrenmek
mkdir
mkdir yeni_dizin # Yeni bir dizin oluşturmak
rmdir
rmdir boş_dizin # Boş bir dizini silmek
rm
rm dosya.txt # Tek bir dosya silmek için
rm -r dizin_adi # Dizin(klasör) ve içeriğini silmek için
cp
cp kaynak_dosya hedef_dosya # Tek bir dosya kopyalamak için
cp -r kaynak_dizin hedef_dizin # Dizin ve içeriğini kopyalamak için
mv
mv kaynak hedef # Dizin/Dosya Taşımak için
mv eski_isim yeni_isim # Dizin/Dosya Yeniden adlandırmak için
cat
cat dosya.txt # Dosya içeriğini görüntülemek
less
less dosya.txt # Dosya içeriğini sayfa sayfa görüntülemek
head
head dosya.txt # Dosyanın ilk satırlarını görüntülemek
nano || vim
nano dosya.txt
vim dosya.txt
sudo
sudo komut # Yönetici (root) yetkisi ile komut çalıştırmak için
apt-get || apt
sudo apt-get update # Paket listelerini güncellemek için
sudo apt-get install paket_adi # Paket kurmak için
sudo apt-get remove paket_adi # Paket kaldırmak için
ps
ps aux # Çalışan süreçleri görüntülemek için
top
top # Canlı süreç izlemek için
kill
kill PID # Süreç sonlandırmak için
Note
PID (Process ID) süreç kimliğidir.
ping
ping hedef_ip_adresi # Ağ bağlantısını test etmek için
ifconfig
ifconfig # Ağ arayüzlerini ve IP adreslerini görüntülemek için
ssh
ssh kullanıcı_adi@hedef_ip_adresi # SSH ile uzak sunucuya bağlanmak için
man
man komut_adi # Komutların kullanım kılavuzunu görüntülemek için
--help
komut_adi --help # Komut hakkında yardım almak için
Terminal komutlarını da öğrendiğimize göre artık SSH bağlantısı yapabilmeyi ve detaylarını öğrenebiliriz.
SSH (Secure Shell), ağ üzerinden güvenli bir şekilde veri iletimi ve uzaktan yönetim sağlamak için kullanılan bir protokoldür. SSH, kullanıcıların başka bir bilgisayarda komutları çalıştırmasına, dosya transferi yapmasına ve ağ servislerini güvenli bir şekilde kullanmasına olanak tanır. SSH, özellikle güvenlik gerektiren işlemler için tercih edilir.
-
Güvenlik:
- SSH, veri iletimi sırasında tüm trafiği şifreler. Bu, ağ üzerindeki potansiyel saldırganların veri paketlerini okuyamamasını sağlar.
- Kimlik doğrulama mekanizmaları, kullanıcıların kimliklerini doğrulamak için güvenli yöntemler sunar.
-
Uzak Yönetim:
- SSH, uzaktaki bir bilgisayara erişip komut çalıştırma imkanı verir. Bu, sistem yöneticileri ve geliştiriciler için vazgeçilmez bir araçtır.
- Uzak sunucuların bakımını ve yönetimini kolaylaştırır.
-
Dosya Transferi:
- SSH, SCP (Secure Copy) ve SFTP (SSH File Transfer Protocol) gibi protokoller aracılığıyla güvenli dosya transferi yapmayı sağlar.
- Büyük dosyaların veya hassas verilerin güvenli bir şekilde taşınmasını sağlar.
-
Tünelleme ve Port Yönlendirme:
- SSH tünelleme, güvenli bir bağlantı üzerinden başka bir ağ servisine erişim sağlar. Örneğin, uzaktaki bir veritabanına güvenli bir şekilde bağlanmak için kullanılabilir.
- Port yönlendirme, belirli portların güvenli bir şekilde yeniden yönlendirilmesini sağlar.
-
Çapraz Platform Desteği:
- SSH, Linux, macOS ve Windows dahil olmak üzere çeşitli işletim sistemlerinde kullanılabilir.
- Bu, farklı platformlar arasında uyumluluk ve esneklik sağlar.
SSH bağlantısı kurmak için, SSH istemcisi olan bir bilgisayardan SSH sunucusu çalıştıran bir bilgisayara bağlanılır. Aşağıdaki komut, bir SSH bağlantısı kurmak için kullanılır:
ssh kullanıcı_adi@hedef_ip_adresi
Bağlantı kurulduğunda, uzaktaki bilgisayarın terminaline erişim sağlanır ve komutlar sanki yerel bir terminalde çalışıyormuş gibi çalıştırılabilir.
Important
Eğer uzak cihazınızdan SSH bağlantısı yapamıyor iseniz, PowerShell kullanarak OpenSSH servisini yükleleyelim.
Öncelikle PowerShell'i YÖNETİCİ olarak çalıştırın
. ardından OpenSSH servisinin sizde yüklü olmadığına emin olmak için aşağıda belirtilen kodu yazarak kontrol yapın.
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
eğer size aşağıdaki gibi bir geri dönüş geliyorsa OpenSSH sizde yüklü demektir.
Name : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
Eğer ki gelmiyorsa şimdi OpenSSH servisini yüklemeye geçebiliriz. Yüklemek için aşağıdaki kodu yazalım.
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Her iki komut da aşağıdaki çıktıyı döndürmelidir:
Path :
Online : True
RestartNeeded : False
OpenSSH Sunucusunu ilk kullanım için başlatmak ve yapılandırmak için PowerShell'i yönetici olarak çalıştırın. Ardından sshd hizmetini başlatmak için aşağıdaki komutları çalıştırın:
# SSHD servisini başlat
Start-Service sshd
# İsteğe bağlı ancak yapmanız tavsiye edilir.
Set-Service -Name sshd -StartupType 'Automatic'
# Güvenlik Duvarı kuralının yapılandırıldığını onaylayın. Kurulum tarafından otomatik olarak oluşturulması gerekir. Doğrulamak için aşağıdakileri yapın.
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {
Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}
Artık rahatlıkla SSH bağlantısı yapmaya başlayabilirsin!
Powershell üzerinden OpenSSH
servisini kullanarak Ubuntu Serverimize
bağlanmaya kaldığımız yerden devam edebiliriz. Bağlantı yapabilmek için öncelikle Sanal Makinemizin IP Adresine ihtiyacımız var. Bunu öğrenebilmek için sanal makinemizin terminaline aşağıdaki komutu girelim:
ip addr
ardından bizi karşılayan ekranda enp0s3
ip adresini kopyalayım. Çünkü artık bu bizim SSH bağlantısı yapacağımız ip adresimiz olacak.
İp adresimizi de öğrendiğimize göre artık SSH bağlantısını yapabiliriz. SSH bağlantısını yapabilmek için aşağıdaki kodu PowerShell içierisine yazalım.
ssh kullanıcı_adi@hedef_ip_adresi
gerekli komutu çalıştırdıktan sonra bizden parola isteyecek. Bu parolaya, Serverimizi kurarken belirlediğimiz şifreyi yazmak yeterli olacaktır.
TEBRİKLER 🎉🎉 Artık SSH bağlantımızı başarılı şekilde yapabiliyoruz.
Note
Görselde SSH bağlantısını yaparken hem ip adresi
kullanmadık hem de parola
girmeden giriş yapabildik. Şimdi sıra bunun nasıl yapıldığına geldi!
SSH-Keygen
; farklı şifreler girmek ve bu farklı şifreleri hatırlamak zorunda kalmamak için oluşturulan bir anahtarlama sistemidir. Kısaca kullanıcılara ait parmak izi niteliğindedir.
SSH bağlantımızı şifre kullanmadan yapabilmek için en güvenli işlem SSH Public key
kullanmak olacaktır. SSH Public key kullanımı sayesinde özellikle ağ yöneticileri, birbirinden farklı uzak bilgisayar erişimlerini tek bir şifre ile gerçekleştirebilmektedir.
Note
SSH Public Key (Açık Anahtar) erişim sağlayacağınız sunucuya, SSH Private Key (Gizli Anahtar) ise kendi bilgisayarınıza tanımlamanız yeterli olacaktır.
id_rsa
: Private Key
id_rsa.pub
: Public Key
Anahtarları oluşturmak için öncelikle aşağıdaki komutu kullanmamız gerekmektedir.
ssh-keygen
Bizden key dosyalarını oluşturacak dizin isteniyor, boş bırakarak Enter tuşuna basmanız yeterli olacaktır.
Eğer daha önce bir key oluşturduysanız, sizden yeni keyi mevcut dosyanın üzerine yazmak için izin isteyecektir. Ona 'Y' diyip Enter demeniz yeterli olacaktır.
Sonrasında sizden şifre girmeniz istenecek. Biz her seferinde şifre girmek istemediğimiz için şifre yerini boş bırakıp enter dememiz yeterli olur.
Bütün işlemleri tamamladıktan sonra karşımıza aşağıdaki gibi bir ekran çıkacak.
Important
ssh-keygen
komutunu hem Windows terminalinde hem de Ubuntu serverinin terminalinde yazalım.
Bizim kopyalama işlemini yapacağımız Anahtar Windows içerisinde oluşturduğumuz id_rsa.pub
dosyası olacaktır.
Windows ~/.ssh
dizininde bulunan id_rsa.pub
dosyasının içerisindeki anahtarı, Ubuntu sunucusunun /root/.ssh
dizinindeki authorized_keys
dosyası içerisine yapıştırmamız gerekmektedir.
Important
Bütün işlemleri yaptıktan sonra Ubuntu Serverini Reboot
etmeyi unutmayın!
Artık şifre kullanmadan SSH bağlantımızı gerçekleştirebiliriz.