SSH-kalitni qanday yaratiş va serverga ötkaziş: Linux va Windows

VPS va serverlar Çop etilgan: · 7 daqiqa öqiş

Root parolini terib topiş mumkin, kalitni esa yöq. SSH-kalit bilan kiriş beş daqiqalik sozlaşni talab qiladi va serverlar buzilişining eng köp uçraydigan sababini — parollarni terişni yopadi.

Bu qanday işlaydi

SSH-kalit — bu ikkita fayl jufti. Maxfiy kalit (id_ed25519) kompyuteringizda qoladi va heç kimga berilmaydi. Oçiq kalit (id_ed25519.pub) serverdagi authorized_keys fayliga nusxalanadi. Ulanişda server sizda şu juftning maxfiy kaliti borligini tekşiradi — parol tarmoq orqali umuman yuborilmaydi.

Bitta kalitni istalgan miqdordagi serverga qöyiş mumkin. Noutbuk öğirlansa yoki xodim işdan ketsa, uning oçiq kalitini authorized_keys dan öçiriş kifoya — barça serverlarda parollarni almaştiriş şart emas.

1-qadam. Linux yoki macOS’da kalit yarating

Terminalni oçing va bajaring:

ssh-keygen -t ed25519 -C "ivan@company.uz"

Yöl haqidagi savolga Enter bosing — kalit ~/.ssh/id_ed25519 ga saqlanadi. Keyin parol iborasini belgilang: maxfiy kalit öğirlansa, usiz undan foydalanib bölmaydi. Böş iborani faqat skriptlar va bekaplar foydalanadigan kalitlar uçun qoldiring.

Server eski bölsa va ed25519 ni tuşunmasa (CentOS 6 va undan oldingi), RSA-kalit yarating: ssh-keygen -t rsa -b 4096.

1-qadam. Windows 10 va 11 da kalit yarating

Windows 10 (1809 va yangiroq) va Windows 11 da OpenSSH mijozi allaqaçon örnatilgan. PowerShell’ni oçing — administrator böliş şart emas — va öşa buyruqni bajaring:

ssh-keygen -t ed25519 -C "ivan@company.uz"

Kalitlar C:\Users\ISMINGIZ\.ssh\ papkasida paydo böladi. Buyruq topilmasa, komponentni yoqing: «Sozlamalar → Ilovalar → Qöşimça komponentlar → OpenSSH mijozi».

PuTTY. PuTTY orqali ulansangiz, kalitni PuTTYgen’da yarating: EdDSA (Ed25519) turi → Generate → Key passphrase’ni belgilang → Save private key (.ppk fayli). Oçiq kalitni yuqoridagi «Public key for pasting into OpenSSH authorized_keys file» maydonidan nusxalang — u keyingi qadamda kerak.

2-qadam. Kalitni Linux serverga ötkazing

Linux va macOS’dan — bitta buyruq bilan. U server parolini oxirgi marta söraydi va kalitni özi kerakli joyga qöyadi:

ssh-copy-id root@SIZNING_IP

SSH nostandart portda bölsa: ssh-copy-id -p 2222 root@SIZNING_IP.

Windows’dan ssh-copy-id buyruği yöq, şuning uçun PowerShell’da quyidagisidan foydalaning:

type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@SIZNING_IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Qölda (masalan, PuTTYgen kalitidan yoki şaxsiy kabinetdagi konsol orqali): serverga kiring, nano ~/.ssh/authorized_keys faylini oçing va oçiq kalitni bitta qator qilib qöying. Huquqlar şunday bölişi kerak: ~/.ssh papkasi — 700, fayl — 600, aks holda server kalitni e’tiborsiz qoldiradi.

Tekşiring: ssh root@SIZNING_IP server parolisiz kiritişi kerak (agar belgilagan bölsangiz, faqat kalitning parol iborasini söraydi).

2-qadam. Kalitni Windows Server’ga ötkazing

Windows Server 2019, 2022 va 2025 da avval OpenSSH serverini yoqing — administrator PowerShell’ida:

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Start-Service sshd
Set-Service -Name sshd -StartupType Automatic

Kalitni qayerga qöyiş foydalanuvçiga boğliq:

  • Oddiy foydalanuvçi — C:\Users\ISM\.ssh\authorized_keys fayliga.
  • «Administratorlar» guruhidagi foydalanuvçi — umumiy C:\ProgramData\ssh\administrators_authorized_keys fayliga. Administratorlar uçun foydalanuvçi papkasidagi fayl öqilmaydi — «kalit işlamayapti» degan holatning eng köp uçraydigan sababi şu.

Administrator uçun serverda bajaring (öz oçiq kalitingizni qoştirnoq içiga qöying):

Add-Content -Path C:\ProgramData\ssh\administrators_authorized_keys -Value "ssh-ed25519 AAAA... ivan@company.uz"
icacls.exe C:\ProgramData\ssh\administrators_authorized_keys /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"

Ikkinçi buyruq faylga kirişni faqat administratorlar va tizimga qoldiradi — boşqa huquqlar bilan sshd kalitni qabul qilmaydi. Rusça Windows’da guruh «Администраторы» deb ataladi.

3-qadam. Parol bilan kirişni öçiring

Faqat kalit bilan kiriş işlayotganiga işonç hosil qilganingizdan keyin — aks holda özingizga kirişni yopib qöyasiz. Linux’da /etc/ssh/sshd_config ni oçing va quyidagini qöying:

PasswordAuthentication no
PermitRootLogin prohibit-password

Ubuntu 22.04 va 24.04 da /etc/ssh/sshd_config.d/ papkasini ham tekşiring — 50-cloud-init.conf fayli parollarni qayta yoqişi mumkin. Keyin xizmatni qayta işga tuşiring va joriy oynani yopmasdan yangi oynada kirişni tekşiring:

sudo sshd -t && sudo systemctl restart ssh

Windows Server’da xuddi şu narsa C:\ProgramData\ssh\sshd_config faylida: PasswordAuthentication no, keyin Restart-Service sshd.

Kalitni bir serverdan boşqasiga

rsync orqali bekaplar, deploy yoki baza replikatsiyasi uçun bitta server boşqasiga parolsiz kirişi kerak. A serverda kalit yarating va uni B serverga ötkazing:

ssh-keygen -t ed25519 -f ~/.ssh/backup_key -N "" -C "backup@server-a"
ssh-copy-id -i ~/.ssh/backup_key.pub user@SERVER_B
ssh -i ~/.ssh/backup_key user@SERVER_B "hostname"

Bunday kalitlar uçun B serverda minimal huquqli alohida foydalanuvçi oçing — root emas. Şaxsiy maxfiy kalitingizni serverlarga nusxalamang: serverdan serverga ötiş kerak bölsa, ssh -A yoki ssh -J (jump-xost) dan foydalaning.

Qulaylik: ~/.ssh/config fayli

Har safar IP, port va kalit yölini termaslik uçun serverlarni ~/.ssh/config da tasvirlang (Windows’da — C:\Users\ISM\.ssh\config):

Host prod
    HostName 185.0.0.10
    User deploy
    Port 2222
    IdentityFile ~/.ssh/id_ed25519

Endi ssh prod kifoya, scp va rsync ham bu nomni xuddi şunday tuşunadi.

Kiritmasa

  • ssh -v root@SIZNING_IP ni işga tuşiring — natijada qaysi kalit taklif qilinayotgani va server nima javob bergani körinadi.
  • Linux: ~/.ssh huquqlari — 700, authorized_keys — 600, egasi — foydalanuvçining özi. Server xatolari — journalctl -u ssh da.
  • Windows Server: administrator → kalit administrators_authorized_keys da, huquqlar icacls orqali. Jurnal — «Hodisalarni köriş → Ilovalar va xizmatlar jurnallari → OpenSSH».
  • authorized_keys dagi kalit bitta qator bölişi kerak: PuTTYgen yoki messenjerdan nusxalaşda köpinça qator köçişlari paydo böladi.

MyCloud VPS’ida sizda doimo zaxira kiriş bor — mcvps.uz şaxsiy kabinetidagi server konsoli: SSH sozlamalarida xato qilsangiz, u orqali hammasini tuzatiş mumkin. Ubuntu, Debian yoki Windows Server bilan server VPS serverlar sahifasida yaratiladi.

Maqoladagi vazifada yordam kerakmi?

Konfiguratsiyani tanlaymiz, narxini hisoblaymiz va köçişda yordam beramiz.

Nimani tanlaşni bilmayapsizmi? Maslahat beramiz va konfiguratsiya tanlaymiz

Nima kerakligini yozing — 1C uçun server, topşiriş punkti uçun kameralar yoki boşqa hostingdan köçiş. Yeçim tanlaymiz, aniq narxni aytamiz va köçişda yordam beramiz: maslahat beramiz va qadamlarni tuşuntiramiz.