description |
---|
Uzak sunucu (server) yönetimi, kurulum, yapılandırma ve ssh ile şifresiz bağlanma işlemleri |
- 🔗 DigitalOcean sitesi üzerinden hesap açıp GitHub veya Google ile bağlayabilirsin
- 💳 Kredi kartı bilgilerini verip, 1$ çekim işlemine müsaade ederek sahte bir kullanıcı olmadığını doğrulamalısın
- ⛅ Hesap kaydı tamamlandıktan sonra herhangi bir sunucu alman gerekmekte
- 💵 GitHub Student Package alanından alınan Promo code kısmını, sunucu oluşturduktan sonra Billing alanından girmen gerekmekte
{% hint style="info" %} 💁♂️ Türkiye içerisinde sunucu kiralamak için Natro sitesine göz atabilrisin {% endhint %}
ssh -l <username> <ip>
veyassh <user>:<IP>
komutu ile sunucuya bağlanılır ve şifre girilir- Sunucuya bağlanma sırasında terminal oturumu açılmaktadır
- Oturum kapandığında terminal de sonlanır, yani bağlantıdan çıkarsanız tüm işler sonlanır
- Bunu engellemek için
sudo apt install tmux
komutu iletmux
aracını indirin (nohup
uğraştırıcı 😢) tmux
ile terminal oturumu içerisinde yeni bir process başlatılmakta ve oturum kapansa da devam etmektedir
{% hint style="info" %} 🧙♂ Detaylı bilgi için How to run a Python script in the cloud? yazısına bakınız {% endhint %}
{% tabs %} {% tab title="✴️ Windows" %} {% code title="ConnectServer.ps1" %}
cd ~
$USER = Read-Host 'Username'
$IP = Read-Host 'IP adress'
$KEY_ID = Read-Host 'Key ID'
$KEY_PATH = ".ssh/${KEY_ID}_ecdsa"
ssh-keygen -t ecdsa -b 521 -f ${KEY_PATH}
# Windows için SSH servisini başlatma
Get-Service -Name ssh-agent | Set-Service -StartupType AutomaticDelayedStart
Start-Service ssh-agent
# SSH keyi sunucuya kopyalama ve yetkilendirme
ADDRESS=$USER@$IP
ssh-copy-id -i $KEY_PATH.pub $ADDRESS
# SSH copy çalışmaz ise alttakini deneyin
# $pub = (Get-Content ~/${KEY_PATH}.pub)
# ssh $USER@$IP "mkdir -p ~/.ssh && echo $pub >> .ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
# SSH keyi yerel anahtarlara ekleme (eğer şifre istenirse anahtar eklenmeli)
ssh-add $KEY_PATH
# SSH ile adrese bağlanma
ssh $ADDRESS -A
{% endcode %} {% endtab %}
{% tab title="🐧 Linux" %} {% code title="create-ssh-connection.sh" %}
#!/usr/bin/bash
read -p 'Username: ' USER
read -p 'IP adress: ' IP
read -p 'Key ID: : ' KEY_ID
# SSH key oluşturma
KEY_PATH="$HOME/.ssh/${KEY_ID}-ecdsa"
ssh-keygen -t ecdsa -b 521 -f ${KEY_PATH}
# SSH keyi sunucuya kopyalama ve yetkilendirme
ADDRESS=$USER@$IP
ssh-copy-id -i $KEY_PATH.pub $ADDRESS
# SSH keyi yerel anahtarlara ekleme (eğer şifre istenirse anahtar eklenmeli)
ssh-add $KEY_PATH
# SSH ile adrese bağlanma
ssh $ADDRESS -A
{% endcode %} {% endtab %} {% endtabs %}
- 🧐
ssh ${USER}@${IP}
komutu ileOpenSSH
varlığını kontrol edil, tepki veriyorsa vardır - 🔑
ssh-keygen -t ecdsa -b 521 -f ${KEY_PATH}
komutu ilessh
anahtarı oluşturun- SSH, secure shell anlamına gelir ve uzaktan terminal yönetim protokoldür
- SSH anahtarlarından
pub
uzantılı olan açık anahtardır ve sunucuya aktarılması gerekir - Diğer anahtar kapalı olandır ve paylaşılmaması gerekmektedir
- ✴️ Bu adımlar sadece Windows kullanıcıları tarafından
powershell
üzerinden yapılmalıdır- 📢
Get-Service -Name ssh-agent | Set-Service -StartupType AutomaticDelayedStart
komutu ilessh
servisini gecikmeli olarak otomatik başlatabilmek için yapılandırın - 👮♂️ Eğer servis otomatik başlatılmazsa her ssh bağlantısı için yeniden başlatmanız gerekir
- ⚙️
Start-Service ssh-agent
komutu ile ssh servisini başlatın - ➕
ssh-add ${KEY_PATH}
komutu ilessh
anahtarınıkeystores
içerisine ekleyin - Kapalı anahtarınız
keystores
içerinde saklanır - Sunucu bağlantılarında bu anahtar deposu kullanılır
- 📢
- 🚚
ssh ${USER}@${IP} "\
komutunu yazın ve ardından alttaki komutları girin- 📂
mkdir -p ~/.ssh && \
ile sunucudassh
antahtarları dizini yoksa oluşturun - ➕
echo (Get-Content ${KEY_PATH}.pub) >> .ssh/authorized_keys && \
ile açık anahtarınızı sunucuda onaylı anahtar listesine ekleyin - 🐧
echo \"cat ${KEY_PATH}.pub\" && \
komutu ile Linux işletim sistemini kullananlar açık anahtarı ekleyebilir - 👮♂️
chmod 700 ~/.ssh && \
komutu ilessh
dizinini yetkilendirin - 👮♂️
chmod 600 ~/.ssh/authorized_keys"
komutu ile anahtarların olduğu dosyaya okunabilmesi için izinleri verin
- 📂
📢 Eğer sunucu sizden tekrardan şifre istiyor ise, 3. ve 4. adımları uyguladığınızdan emin olun
{% hint style="info" %} 🧙♂ Detaylı bilgi için
- SSH Login Without a Password
- Starting ssh-agent on Windows 10 fails: “unable to start ssh-agent service, error :1058”
- How to append authorized_keys on the remote server with id_rsa.pub key
- ssh-agent: agent returned different signature type
alanlarına bakabilirsin. {% endhint %}
- ⚙️ Terminal üzerinden resimdeki gibi sunuya bağlanmak için Windows Terminal ayarlarını açın
- 🔨 Yapılandırma dosyasında
profiles
içerisindekilist
alanına alttaki ayarları ekleyin
{% code title="settings.json" %}
{
"guid": "{4dc7203f-1c35-4058-8a46-1a2d4989fbe0}", // Eşsiz GUID değeri
"name": "Natro Host", // Sekme adı
"suppressApplicationTitle": true, // Tab ismini sabit yapar
"icon": "%USERPROFILE%/OneDrive/Pictures/Icons/Ico/terminal.ico", // Bu alana belirlediğiniz ikonu koyun
"commandline": "ssh root@<IP>", // IP alanına ip adresinizi yazın
"hidden": false
}
{% endcode %}
- Sunucuya bağlandıktan sonra yapılacak ilk iş yüklü olan paketleri güncellemek olmalıdır
sudo apt update
vesudo apt upgrade
komutları ile paketlerini güncelleyebilirsin- Çok fazla paket güncellemelerinden sonra
reboot
komutu ile sistemi yeniden başlatmanız tavsiye edilir - Paket yükseltme işlemi sonrasında kullanılmayan veya eski paketleri temizlemek için
sudo apt autoremove
komutunu kullanın
- 💁♂️ Her git işlemi için tekrardan giriş yapmak istemiyorsanız bu adım sizin için faydalı olacaktır
- 📧
git config --global user.email "<email>"
ile email adresinizi tanımlayın - 🤵
git config --global user.name "<username>"
le kullanıcı adınızı tanımlayın - 💼
git config --global credential.helper 'cache --timeout=999999'
komutu ile bilgilerinizi saklayın
- NTP (network time protocol) ayarlarını yapmak için
apt-get install ntp ntpdate
komutu ilentpdate
paketini kurun ntpdate time.ume.tubitak.gov.tr
ile TÜBİTAK NTP sunucusuna bağlantı yapınservice ntp restart
komutu ile yeniden başlatındate
komutu ile tarihi görüntüleyebilirsiniztzselect
komutu ile zaman bölgesini seçenekler arasından de seçebiliriztimedatectl set-timezone Europe/Istanbul
komutu ile direkt olarak Istanbul zaman dilimini ayarlayabilriiz
sudo timedatectl set-timezone Europe/Istanbul
# Yukarıdaki komut hatalı olursa aşağıdakini deneyin
apt-get install ntp ntpdate
ntpdate time.ume.tubitak.gov.tr
service ntp restart
timedatectl set-timezone Europe/Istanbul
# date
{% hint style="info" %} 🧙♂ Detaylı bilgi için Linux zaman sunucusu ayarlama alanına bakabilirsin. {% endhint %}
tmux
komutu ile yeni bir terminal açtırın ve oraya komutunuzu yazın- ✲ Ctrl + B, D kısayolu ile ana terminalinize geçin
- Artık oturumu kapatsanız bile
tmux
ile açılan terminaldeki işlemler devam etmektedir tmux attach
komutu ile son terminale bağlanabilirsin- Terminal işini sonlandırmak için ✲ Ctrl + B, : kısayoluna basıp
kill-session
komutunu yazın
{% hint style="info" %} 🧙♂ Detaylı bilgi için Getting started with Tmux alanına bakabilirsin. {% endhint %}
- Sunucularda python3.6 default olarak olur ama
pip
vevenv
kurulu olmaz sudo apt install python3-pip
ile pip kurulurpip
python paketlerinin indirilmesine yardımcı olan araçtır
sudo apt install python3-venv
ile sanal ortam oluşturma aracı kurulurvenv
sanal python ortamları oluşturarak sistemin python paketlerinin bozulmasını engeller
{% code title="Python3.9 ve venv Kurulumu" %}
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
apt install python3-venv python3.9 python3.9-venv
python3.9 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
{% endcode %}
{% hint style="warning" %} 📢 Python 3.9-venv kullanılması için python3-venv paketi gereklidir {% endhint %}
{% hint style="info" %} 🧙♂ Detaylı bilgi için Ubuntu 20.04/19.04: Install Python 3.9/3.8/3.7/3.6, Pip and Venv alanına bakabilirsin. {% endhint %}