Ubuntu VPS баптау: SSH-тан HTTPS-ке дейін
Жаңа Ubuntu 24.04 LTS VPS серверінде бөлек әкімші тіркелгісін дайындап, Nginx арқылы шағын статикалық сайтты HTTPS-пен жариялаңыз. Әр кезеңде нәтижені тексеріп, бастапқы кіру мүмкіндігін сақтаңыз.
VPSuntu · Жаңартылды: · Оқу уақыты: шамамен 5 минут
Нұсқаулық мазмұны
Серверді, доменді және қалпына келтіру жолын дайындаңыз
Жаңа Ubuntu 24.04 VPS, қоғамдық IPv4, 22-порттағы SSH, sudo құқығы бар бастапқы тіркелгі және өзіңіз басқаратын домен қажет. Сервер жасамас бұрын келесі қадамда SSH кілтін дайындаңыз. Бос VPS бұрыннан жасалса, кілтті жұмыс істейтін қосылым арқылы енгізетін жолды қолданыңыз. Клиент командалары Linux, macOS немесе WSL ішіндегі Bash-та; сервер командалары SSH сессиясында орындалады. Мысалдағы жолдар қолданыстағы сайтқа тиесілі болса, тоқтаңыз.
203.0.113.10 орнына өз IP мекенжайыңызды, app.example.com орнына доменіңізді жазыңыз. Бастапқы ubuntu пайдаланушысы провайдерге қарай өзгереді. Кіру не firewall баптауларын өзгертпес бұрын recovery console ашыңыз. Бейненің желі нұсқаулығын тексеріңіз: Oracle Cloud Ubuntu үшін төмендегі UFW жолы жарамайды.
SSH кілтін жасаңыз немесе бар қосылым арқылы қосыңыз
Өз компьютеріңізде бөлек кілт жасап, passphrase таңдаңыз. Файл бұрыннан бар болса, оны алмастырмай, барлық келесі қадамда басқа атау қолданыңыз. .pub файлы — ашық кілт; жеке кілт компьютеріңізде қалуы керек.
mkdir -p ~/.ssh
ssh-keygen -t ed25519 -f ~/.ssh/ubuntu_vps
cat ~/.ssh/ubuntu_vps.pubЖаңа VPS үшін: Ubuntu 24.04 серверін жасағанда осы ашық кілтті провайдердің SSH key өрісіне енгізіңіз. Бастапқы пайдаланушыны анықтап, төмендегі host fingerprint тексеруіне өтіңіз. Бар серверге арналған келесі екі команданы өткізіңіз.
Бұрын жасалған бос VPS үшін: жұмыс істейтін SSH сессиясын ашық қалдырыңыз. Компьютердегі басқа терминалдан жаңа ашық кілтті қазіргі аутентификациямен көшіріңіз. existing_vps_key орнына қазіргі жеке кілт файлын қойыңыз. Кіру password не SSH agent арқылы болса, -i ~/.ssh/existing_vps_key бөлігін алып тастаңыз; сервердің аутентификация саясатын өзгертпеңіз.
scp -i ~/.ssh/existing_vps_key ~/.ssh/ubuntu_vps.pub ubuntu@203.0.113.10:ubuntu-vps-admin.pubБар сервер сессиясында жіберілген ашық кілт файлын тексеріп, оны өз бастапқы тіркелгіңіздің authorized_keys файлына қосыңыз. Қосу ескі кілттерді сақтайды; қосымша жаңа жол соңғы жолында newline жоқ файлды да ескереді. Жұмыс істейтін кіру жолы болмаса, алдымен провайдердің recovery рәсімін пайдаланыңыз.
if ssh-keygen -lf ~/ubuntu-vps-admin.pub; then
mkdir -p ~/.ssh
chmod 700 ~/.ssh
printf '\n' >> ~/.ssh/authorized_keys
cat ~/ubuntu-vps-admin.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
fiЕкі жолда да алғашқы қосылымды қабылдамас бұрын сервердің host key fingerprint мәнін сенімді recovery console арқылы салыстырыңыз. Ed25519 host key үшін консольде:
sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pubКомпьютеріңізден жаңа кілтпен жаңа қосылым ашыңыз. Сәтті қосылғанша бұрынғы сессияны жаппаңыз.
ssh -i ~/.ssh/ubuntu_vps ubuntu@203.0.113.10Компьютердің басқа терминалынан келесі кезеңде жасалатын әкімшіге арналған ашық кілтті көшіріңіз. Уақытша ашық кілт файлын қайта көшіруге болады.
scp -i ~/.ssh/ubuntu_vps ~/.ssh/ubuntu_vps.pub ubuntu@203.0.113.10:ubuntu-vps-admin.pubБөлек әкімші жасап, жаңа сессияда тексеріңіз
Алдымен серверде getent passwd deploy орындаңыз. Еш тіркелгі қайтпауы тиіс. deploy бар болса, қолданылмаған атау таңдап, пайдаланушыны, топты және home жолдарын барлық жерде ауыстырыңыз; басқа адамның key файлын алмастырмаңыз.
OS пен ресурстарды тексеріп, жаңартуларды қарап шығыңыз. Жаңа әкімшіге sudo сұрауы үшін мықты password орнатыңыз. install командалары кілт файлының иесін және шектеулі рұқсаттарын бекітеді.
cat /etc/os-release
free -h
df -h /
sudo apt update
sudo apt upgrade
sudo adduser deploy
sudo usermod -aG sudo deploy
sudo install -d -m 700 -o deploy -g deploy /home/deploy/.ssh
sudo install -m 600 -o deploy -g deploy ~/ubuntu-vps-admin.pub /home/deploy/.ssh/authorized_keysКомпьютерде басқа терминал ашып, жаңа әкімші ретінде қосылыңыз:
ssh -i ~/.ssh/ubuntu_vps deploy@203.0.113.10Жаңа сервер сессиясында sudo тексеріңіз. deploy password қабылданғаннан кейін root шығуы керек. Екі тексеру өткен соң осы сессияда жалғастырыңыз, бастапқы кіруді сақтаңыз.
sudo whoamiNginx пен бейнеге сай firewall баптаңыз
Серверде алдымен Nginx орнатыңыз. Провайдер желісінің firewall ережелері мен guest firewall екеуі де қосылымға әсер етеді. Өзгеріс кезінде консоль мен жұмыс істейтін SSH сессиясы ашық тұрсын.
sudo apt install nginx
sudo systemctl enable --now nginxПровайдер желісінде әкімшілік IP мекенжайыңыздан TCP 22, келушілерге TCP 80/443 рұқсат етіңіз. SSH басқа портта болса, оның ережесін сақтаңыз. Провайдер желісіндегі рұқсат guest firewall бұғаттауын жоймайды.
Oracle Cloud Ubuntu: төмендегі UFW блогын толығымен өткізіңіз. UFW маңызды image firewall ережелеріне кедергі жасап, жүктелуді бұзуы мүмкін. iSCSI boot және block volume ережелерін қоса, берілген iptables ережелерін сақтаңыз. OCI security list немесе NSG және құжатталған guest firewall арқылы HTTP/HTTPS ашыңыз. Ережелерді тазаламаңыз және image firewall пакеттерін ауыстырмаңыз.
Басқа жаңа Ubuntu бейнелерінде: провайдер UFW қолдайтынын және басқа басқарылатын firewall талап етпейтінін тексергенде ғана осы блокты пайдаланыңыз. UFW қоспас бұрын нақты SSH портына рұқсат беріңіз; мысалда 22-порт.
sudo apt install ufw
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verboseҚай жолды қолдансаңыз да, жаңа SSH қосылымын тексеріңіз. Ашық сессия жаңадан кірудің орнына жүрмейді. Сертификат сұрамас бұрын келесі сыртқы HTTP тексеруі өтуі тиіс.
Бөлек Nginx сайтына бетті орналастырыңыз
Серверде жаңа document root пен конфигурация жасаңыз. Блоктағы hostname мәнін ауыстырыңыз. Тырнақшадағы EOF маркерлерін сақтаңыз: олар shell-дің Nginx $uri айнымалысын ерте ашып жіберуіне жол бермейді.
sudo install -d -m 755 /var/www/first-site
printf '%s\n' '<!doctype html><html lang="en"><title>First deployment</title><h1>Ubuntu VPS is serving this page</h1></html>' | sudo tee /var/www/first-site/index.html
sudo tee /etc/nginx/sites-available/first-site >/dev/null <<'EOF'
server {
listen 80;
listen [::]:80;
server_name app.example.com;
root /var/www/first-site;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
EOF
sudo ln -s /etc/nginx/sites-available/first-site /etc/nginx/sites-enabled/first-site
sudo nginx -tКонфигурация тексеруі сәтті болғанда ғана Nginx қайта жүктеңіз:
sudo systemctl reload nginxDNS өзгертпей тұрып, өз компьютеріңізден hostname сұрауын сервер IP мекенжайына бағыттаңыз. Әдепкі Nginx беті емес, өз тақырыбыңыз көрінуі керек.
curl --resolve app.example.com:80:203.0.113.10 http://app.example.com/DNS пен HTTPS сертификатын қосыңыз
Доменнің A жазбасын VPS IPv4 мекенжайына бағыттаңыз. AAAA жазбасын сервердің IPv6 қосылымы жұмыс істегенде ғана қосыңыз: ескі AAAA келушілерді және certificate validation сұрауын басқа жаққа жіберуі мүмкін. Мысал DNS тікелей VPS-ке, proxy қолданбай бағытталады деп есептейді.
Өз компьютеріңізде http://app.example.com/ мекенжайын --resolve параметрінсіз тексеріңіз. Өз бетіңіз шыққан соң серверге Ubuntu архивінен Certbot пен Nginx plugin орнатыңыз. Бұл пакеттерге Universe репозиторийі керек; package-not-found қатесін жалғастырмас бұрын түзетіңіз.
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d app.example.com --redirect
sudo nginx -t
sudo certbot renew --dry-run
systemctl list-timers --all certbot.timerEmail және шарттар сұрауларына жауап беріңіз. Certbot осы сайт конфигурациясын өзгертіп, HTTP-тен HTTPS-ке бағыттайды. Renewal timer жоспарланғанын тексеріңіз; белсенді болмаса, sudo systemctl enable --now certbot.timer орындаңыз. HTTP certificate validation және жаңарту үшін 80-порт қолжетімді қалсын.
Сырттан және reboot-тен кейін тексеріңіз
Өз компьютеріңізден redirect, сертификат және мазмұнды тексеріңіз. HTTP HTTPS-ке бағытталуы, HTTPS өз тақырыбыңызды беруі тиіс. curl -k параметрін қоспаңыз: ол сертификат қатесін жасырады.
curl -I http://app.example.com/
curl -I https://app.example.com/
curl -fsS https://app.example.com/Бұл әлі сынақ ортасы болғанда серверде sudo reboot орындаңыз. Қайта қосылған соң deploy ретінде кіріп, systemctl is-active nginx және сыртқы HTTPS сұрауын қайталаңыз. Reboot SSH сессияларын әдейі жабады; сервер оралмаса, консольді пайдаланыңыз.
Қатені анықтап, қалпына келтіруді дайындаңыз
Шағын экранда барлық бағанды көру үшін кестені көлденең жылжытыңыз.
| Белгі | Алғашқы тексеру |
|---|---|
| SSH timeout | IP, провайдер және guest firewall, recovery console |
| Permission denied (publickey) | Пайдаланушы, жеке кілт, authorized_keys рұқсаттары |
| Әдепкі Nginx беті | DNS, server_name және қосылған site |
| Сертификат тексеруі өтпейді | Қоғамдық A/AAAA және 80-порт |
| Өзгерістен соң Nginx істемейді | sudo nginx -t және sudo journalctl -u nginx -n 50 --no-pager |
Кіру ақауы болса, баптауларды өзгертпей тұрып SSH диагностикасымен желі, қызмет және кілт мәселесін ажыратыңыз.
Сайт файлдарын, Nginx конфигурациясын, DNS жазбаларын және қайта құру қадамдарын VPS-тен бөлек сақтаңыз. Оларды басқа машинада қалпына келтіріп көріңіз. Certificate private key көшірілсе, қорғалған сақтау орны қажет. Қолжетімділік пен сертификат мерзіміне alert қосыңыз: бір сәтті тексеру болашақ жаңартуды бақыламайды.
Файл backup және restore жаттығуы жұмыс істейтін сайтты алмастырмай тәуелсіз көшірмені тексереді. Толық қалпына келтіруге қалған assets, сертификаттар мен қызмет баптаулары да керек. Бұл нұсқаулық статикалық файлдарға арналған; runtime мен дерекқордың өз қызметі және backup тәсілі болуы тиіс. Оларды қосқанда ресурстарды қайта өлшеңіз.
Жиі қойылатын сұрақтар
Қолданыстағы сайтта осы командаларды бірден орындауға бола ма?
Нұсқаулық жаңа бос серверге арналған. Бар сайттың жолдарын, пайдаланушыларын және қызметтерін тексеріп, көшірме мен recovery жоспарын дайындамай өзгеріс енгізбеңіз.
Неге жаңа SSH сессиясын ашу керек?
Қазіргі қосылым сақталса да, өзгерген ереже жаңа қосылымды бұғаттауы мүмкін.
Oracle ішінде UFW қолданайын ба?
Бұл нұсқаулықтағы UFW блогын өткізіп, Oracle бейнесінің құжатталған ережелерін сақтаңыз.