..

SSH va uning qiziqarli xususiyatlari haqida tanishamiz

Loyihani qo'llab quvvatlash uchub buyerga bosing

Secure shell (himoyalangan qobiq) unix standartiga ega mashinalarni TCP ulanish orqali masofdadan boshqarishga yordam beruvchi tarmoq protokoli hisoblanadi. Telnet yoki rlogindan farqli ravishda aloqa ma’lumotlarini to’laqonli shifrlash imkoniga ega. Undan tashqari o’zida juda ko’plab qo’shimcha imkoniyatli mujassam etadi.

Tasavvur qilaylik Yevropa datacenterlarining birida turgan serverni O’zbekistondan boshqarmoqchisiz, bu holatda ssh to’laqonli mashina terminaliga ulanish imkonini yaratib beradi. Bunday protokolning ishlab chiqilishiga va hozirgacha foydalanishiga asosiy sabablardan biri unix standartiga ega operatsion tizimlarning asosiy boshqaruvi terminal orqali amalga oshiriladi. Bu esa IoT, Server va shunga o’xshash guidan foydalanmaydigan holatlar uchun qo’l keladi.

SSHdan foydalanish:

SSH dasturining client qismi barcha unix tizimlarda oldindan o’rnatilgan bo’ladi, windows (putty) yoki android (termux) operatsion tizimlarida esa qo’shimcha dastur o’rnatishni talab qiladi. Shuningdek ssh mijoz va server qismga ajratilgan. Bundan siz mijoz, ulanish kerak bo’lgan mashina ssh server hisobida bo’ladi. Juda ko’plab linux distributivlarda openssh-server paketini o’rnatish orqali o’zingizdagi qurilmaga masofadan ssh orqali ulanish imkonini yoqishingiz mumkin.

Mijoz kompyuterdan serverga ulanish:

ssh user@ip

Bunda ssh buyruq, user ulanish kerak bo’lgan foydalanuvchi (ko’p holatlarda root). Ip ulanish nuqtasi ip manzili, shuningdek domain nomlari orqali ulanish ham mumkin. Parol odatda ulanish berilgandan so’ng so’raladi.Shuningdek eslatib o’tish kerakki ssh ulanish vaqtida parollarniyam shifrlash xususiyatiga ega va shu sababli eng yaxshi himoyaga ega ulanish protokoli hisoblanadi.

Agarda sizda parol orqali ulanish yoqimsiz bo’lsa ssh kalitlardan foydalanishingiz ham mumkin. Bu ancha xavfsiz usul bo’lib shuningdek har safar qayta-qayta parol terish oldini oladi.

Bu uchun -i argumenti orqali kalit joylashunivini ko’rsatish mumkin, ssh bo’lsa avtorizatsiya uchun aynan shu kalitdan foydalanadi.

ssh user@ip -i ~/.ssh/key

Shuningdek eslatib o’tish kerakki ssh protokoli oldindan begilangan 22-portda ishlaydi, agarda siz ulanishingiz kerak bo’lgan serverda boshqa port bo’lsa bu uchun -p argumentidan foydalanishingiz mumkin.

ssh user@ip -i ~/.ssh/key -p 2222

Sozlamalar:

Agarda sizda ulanish uchun kalit mavjud bo’lmasa quyidagi buyruq orqali yangi kalit generatsiya qilishingiz mumkin, ushbu buyruq rsa standartiga ega kalitdan foydalanadi. Odatda turli maqsadlarga qarab kalit standarti turlicha bo’lishi mumkin.

ssh-keygen -t rsa

Shundan so’ng buyruq ~/.ssh/ joydashuvida id_rsa va id_rsa.pub yangi ssh kalitini generatsiya qiladi. .pub kengaytmasi bilan tugagan fayl boshqa hostlarda ro’yxatga kiritish uchun, id_rsa esa mijoz kompyuterida bo’lishi lozim. Unutmang id_rsa kalitni hech qachon ishonsiz bo’lgan qurilmalarda saqlamang.

Kalitni serverga yuklash uchun ssd-copy-id buyrug’idan foydalanishingiz mumkin:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@ip

Shuningdek aniq bir server uchun ulanish kalitini qayta generatsiya qilish uchun ehtiyoj sezilsa quyidagi buyruq orqali buni amalga oshirsangiz bo’ladi.

ssh-keygen -R ip

Yuqoridagi tartiblarda ulanish siz uchun judayam noqulaylik tug’dirsa ssh configlari siz uchun ushbu muammoni bartaraf etishi mumkin. Masalan sizda bir nechta serverlar mavjud deylik. Siz ular uchun har doim qaysi foydalanuvchiga ulanish, qaysi port va ip manzillarni eslab qolishingiz shart emas. ~/.ssh/config fayli orqali hostlarni oldindan belgilangan nomda saqlab borsangiz bo’ladi.

Bu uchun avvalo config faylini yaratish lozim (agarda mavjud bo’lmasa):

touch ~/.ssh/config
chmod 600 ~/.ssh/config

Shundan so’ng fayl kontentiga kerakli hostni kiritsangiz bo’ladi:

Host home
    HostName 192.168.1.100
    User eshmat

Shundan so’ng siz uy serveringizga ssh home buyrug’i orqali tez va oson ulana olasiz. Ssh esa qolgan parametrlarni konfig faylidan foydalanadi.

Yoki alohida port bo’lsa:

Host office
    HostName my.office.com
    User eshmat
    Port 2222

Yoki hattoki sizda aniq kalitni bog’lash imkoniyam mavjud:

Host office
    HostName my.office.com
    User eshmat
    Port 2222
    IdentityFile ~/.ssh/id_rsa

SSHning qo’shimcha imkoniyatlari

SSH faqatgina terminalga ulanishdan tarqali juda ko’plab imkoniyatlarni o’zida mujassam etadi. Masalan: Masofadan buyruqlarni ishga tushirish, fayl o’tkazish, tunnelling va xavfsiz FTP.

Buyruqlarni ishga tushirish

Masofadan buyruqlarni ishga tushirish, terminalga ulanib o’tirmasdan hozirgi sessiyangizni o’zida biror amalni ishga tushirishga yordam beradi. Bunda odatiy ulanish buyrug’idan so’ng buyruqni izolyatsiya qilib berishining o’zi kifoya.

ssh user@ip "echo hello"

Fayllarni ko’chirish

SSH orqali fayllarni ko’chirish bu protokolning eng ko’p ishlatiladigan imkoniyatlaridan biri hisoblanadi.Bunda siz ikkita mashina orasida fayllaringizni xavfsiz almashishingiz mumkin.

Faylni mijoz kompyuteridan serverga yuklash:

scp filename.txt user@ip:/home/user/filename.txt

Yoki serverdan mijoz kompyuteridan yuklash:

scp user@ip:/home/user/filename.txt filename.txt

Shuningdek butun boshli papkani ham muammosiz yuklashingiz mumkin. Bu uchun -r argumenti orqali rekursiz ishlashni ko’rsatishning o’zi kifoya.

scp -r folder/ user@ip:/home/user/

Secure FTP

FTP (file transfer protocol) bu fayllarni almashish uchun mo’ljallangan protokol bo’lib ssh o’zida ftpning analogi bo’lgan sftpni taklif etadi. Bunda ishlash prinsipi juda o’xshash ammo xavfsiz usulda amalga oshiriladi.

Terminal orqali foydalanish:

sftp user@ip

Juda ko’plab unix platformalardagi fayl menegerlari ushbu ulanish turlarini qo’llash imkoniga ega. Fayl menejeringizdan joylashuvni yozish qismiga ssh://user@ip yoki sftp://user@ip buyrug’ini yozish orqali grafik interfeysdanam bu imkoniyatdan foydalansagiz bo’ladi.

SSH tunelling

SSH tunneling juda ko’p imkoniyatlarni yaratadigan yana bir qulayliklardan biri bo’lib ikki mashina orasida xavfsiz tarmoq tuzishga yordam beradi. Masalan tasavvur qilaylik serverda http uchun 80 port ishlab turipti, siz esa ushbu portga odatiy emas balkim ssh orqali xavfsiz ulanmoqchisiz. Bu uchun -L (listen) va -N (No execute) command argumentlaridan foydalanishingiz mumkin.

ssh -L 3000:localhost:80 -N user@ip

Ushbu buyruq ishga tushganidan so’ng brauzeringizda http://localhost:3000 sahifasiga kirsangiz orqali ulanish ssh protokoli orqali amalga oshiriladi. Yoki quyidagi portlarni o’rgatirish orqali butun boshli mysqni shu rejimga o’tkazishingiz mumkin.

ssh -L 3306:localhost:3306 -N user@ip

SSH tunneling orqali o’zingiz uchun proxy va vpn serverlar ko’tarish imkoniyatlari ham mavjud.

SAMBA uchun alternativ

SAMBA protokoli tarmoqdagi kompyuterda directory sharing uchun xizmat qiladi. Agarda windowsda ikkita kompyuterni bir biriga ulagan bo’lsangiz demak siz samba haqida bilasiz.

SSHda ham xuddi shunday imkoniyat mavjud:

Kerakli papkani yaratib olish:

mkdir ~/shared-folder

sshfs dasturini o’rnatish:

sudo apt install ssfs

Kerakli papkani ulashish

sshfs user@ip:/home/user ~/shared-folder

Shundan so’ng kompyuteringizdagi ~/shared-folder papkasida saqlagan ma’lumotlaringiz kompyuter xotirasida emas serverda joylashib boradi.

Bonus

Unixdagi pipeline (quvurlar) imkoniyati orqali sshda turli xildagi triklarni amalga oshirigingiz ham mumkin. Masalan masfodagi diskdan nusxa olish.

ssh user@ip "dd if=/dev/sda" | dd of=backup.img status=progress

Shifrlangan diskni serverdagi kalitlarni saqlamasdan ochish:

cat keyfile.img | ssh user@ip "cryptsetup luksOpen /dev/sdb secret_disk --key-file=-"

Bash scriptni serverga yuklamay ssh orqali ishga tushirish:

cat script.sh | ssh user@ip