Към съдържанието

Настройки за бисквитки

Изберете кои видове бисквитки разрешавате. Можете да промените избора си по всяко време чрез „Настройки за бисквитки“ в долната част на всяка страница. Декларация за поверителност

Необходими

Винаги включени

Нужни са за вход, за запазване на количката и на Вашите избори. Те са винаги включени.

Кои бисквитки?
  • weboke_sessie, weboke_klant, weboke_remember: Вашата сесия и оставането в акаунта
  • weboke_basket: Вашата количка
  • wkBtwIncl: показване на цените с или без ДДС
  • wok_cookies: Вашият избор за бисквитките, 12 месеца

Измерват коя реклама води до посещение или поръчка, за да не плащаме за реклами без резултат.

Кои бисквитки?
  • Google Ads чрез Google Tag Manager (_gcl_au, _gcl_aw), до 90 дни
  • OpenAI Ads, реклами в ChatGPT
  • wok_aff: кой партньор Ви е препратил към нас (партньорска програма), 60 дни

4,6

Държава и език

Всяка държава има собствен сайт, с цените и ДДС на тази държава.

Преглед

Първото влизане през SSH

Модул 1: Вашият първи сървър · Време за четене: 10 минути

Цел на урока: След този урок ще можете да влезете за първи път в сървъра си през SSH, ще проверите пръстовия отпечатък на сървъра, преди да му се доверите, и ще знаете какво да правите при предупреждение, че самоличността на сървъра се е променила.

Основни понятия: SSH, клиент и сървър, порт 22, банер с версията, host key, пръстов отпечатък (SHA256), known_hosts, trust on first use, "REMOTE HOST IDENTIFICATION HAS CHANGED", PowerShell и Terminal

Какво е SSH

SSH (Secure Shell) е криптираната връзка, с която управлявате сървър от разстояние. Вие пишете на собствения си компютър, а командите се изпълняват на сървъра. Всичко, което минава по връзката, включително Вашата парола, е криптирано.

Има две страни:

  • SSH клиентът на Вашия компютър: програмата ssh. В macOS и Linux тя е налична по подразбиране. В Windows 10 (от версия 1809) и Windows 11 клиентът OpenSSH е част от Windows; използвате го в PowerShell или Windows Terminal. Ако липсва, добавете го през Настройки, Допълнителни функции, "OpenSSH Client". Програми с прозорци като PuTTY също работят, но в този курс използваме ssh.
  • SSH сървърът на VPS: програмата sshd (от OpenSSH). По подразбиране тя слуша на порт 22.

Влизане

Влизате с потребителско име и адреса на сървъра:

PS C:\Users\anna> ssh root@192.0.2.10

Или с име, ако сте го задали в DNS (урок 7.1):

anna@laptop:~$ ssh root@web1.example.com

Първия път ще видите нещо подобно:

The authenticity of host '192.0.2.10 (192.0.2.10)' can't be established.
ED25519 key fingerprint is SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Това е най-важният момент в този урок. Не въвеждайте сляпо yes.

Host key и пръстовият отпечатък

Всеки SSH сървър има един или повече host keys: двойки ключове, с които сървърът доказва кой е. Публичните части се намират на сървъра в /etc/ssh/, например /etc/ssh/ssh_host_ed25519_key.pub. При всяка връзка сървърът показва, че притежава тайната част.

Пръстовият отпечатък е кратко обобщение (hash) на такъв публичен ключ. По подразбиране OpenSSH показва формата SHA256: SHA256:, последвано от 43 знака.

Първото SSH влизане във Вашия VPS 0:59

Въпросът "Are you sure you want to continue connecting?" означава: Вашият компютър все още не познава този сървър. Кой гарантира, че говорите с Вашия VPS, а не с някой, който прихваща трафика? Никой, освен ако Вие не сравните пръстовия отпечатък с надежден източник.

Този източник е конзолата на Вашия доставчик (урок 1.2). Там не комуникирате със сървъра през мрежата. Влезте в конзолата и изведете пръстовия отпечатък:

root@web1:~# ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs root@web1 (ED25519)

Ако той съвпада точно с това, което показва клиентът, въведете yes. Можете също да поставите самия пръстов отпечатък вместо yes; тогава ssh ще го сравни вместо Вас. Ако се различава, спрете и изяснете причината (грешен IP адрес, преинсталиран сървър или нещо по-сериозно).

Обърнете внимание на типа: клиентът посочва типа (ED25519, ECDSA или RSA). Сравнявайте пръстовия отпечатък от същия тип. Много images показват пръстовите отпечатъци и при първото стартиране в конзолата (cloud-init), между редове като BEGIN SSH HOST KEY FINGERPRINTS.

known_hosts и trust on first use

Когато въведете yes, ще видите:

Warning: Permanently added '192.0.2.10' (ED25519) to the list of known hosts.

Клиентът запазва ключа в ~/.ssh/known_hosts (в Windows C:\Users\<naam>\.ssh\known_hosts). Оттук нататък той сравнява автоматично при всяка връзка. Този модел се нарича trust on first use (TOFU): първия път трябва да проверите сами, след това клиентът следи вместо Вас.

Затова първата проверка е толкова важна: ако се доверите на грешен ключ, клиентът никога повече няма да Ви предупреди.

Ако самите Вие работите на компютър с Debian или Ubuntu, имената в known_hosts по подразбиране са хеширани (HashKnownHosts yes в /etc/ssh/ssh_config), така че там няма да видите четими IP адреси. В Windows и macOS те са записани четимо. Търсенето работи навсякъде с:

anna@laptop:~$ ssh-keygen -F 192.0.2.10
# Host 192.0.2.10 found: line 3
|1|kP9...= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA...

"REMOTE HOST IDENTIFICATION HAS CHANGED"

Понякога ще видите това предупреждение:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
...
Host key verification failed.

Сървърът показва различен ключ от този, който познава Вашият клиент. Тогава ssh отказва да се свърже. Има два вида причини:

НормалниПодозрителни
Преинсталирали сте VPS (нови host keys)Не сте променяли нищо, а ключът все пак е различен
IP адресът е даден на друг сървърСвързани сте към непозната Wi-Fi мрежа
Съзнателно сте сменили host keysПръстовият отпечатък в конзолата се различава от това, което клиентът вижда сега

Ако има нормално обяснение, проверете отново пръстовия отпечатък в конзолата и едва след това изтрийте стария ред:

anna@laptop:~$ ssh-keygen -R 192.0.2.10
# Host 192.0.2.10 found: line 3
/home/anna/.ssh/known_hosts updated.

При следващата връзка отново ще получите въпроса от първия път и отново ще проверите. Никога не задавайте StrictHostKeyChecking no в настройките си, за да махнете предупреждението: така изключвате точно защитата, за която става дума.

Банерът с версията

Преди нещо да бъде криптирано, клиентът и сървърът си изпращат един ред текст: банера с версията. Той е видим за всеки в интернет. Можете да го видите с ssh -v:

anna@laptop:~$ ssh -v root@192.0.2.10 2>&1 | grep "remote software"
debug1: Remote protocol version 2.0, remote software version OpenSSH_9.6p1 Ubuntu-3ubuntu13.5

Тук сървърът съобщава кой протокол (2.0) и какъв софтуер използва. Debian и Ubuntu добавят след него версията на пакета. Това не е тайна, която трябва да криете: нападателите пробват всичко така или иначе, а Вие се защитавате с актуализации (модул 4), не с различен банер. Полезно е обаче, че по банера можете да видите отвън дали сървърът Ви наистина работи с актуализираната версия.

В AlmaLinux и Rocky Linux

Влизането и пръстовите отпечатъци работят по същия начин. Услугата се казва sshd вместо ssh (systemctl status sshd). Банерът не съдържа име на дистрибуцията, а само версията на OpenSSH.

Обобщение

  • SSH е криптираната връзка към Вашия сървър; ssh е клиентът, а sshd е сървърът на порт 22.
  • При първата връзка клиентът показва пръстовия отпечатък на host key. Сравнете го с изхода на ssh-keygen -lf в конзолата, преди да въведете yes.
  • Клиентът запазва ключа в ~/.ssh/known_hosts и занапред сам предупреждава (trust on first use).
  • "REMOTE HOST IDENTIFICATION HAS CHANGED" е нормално след преинсталация; иначе е подозрително. Изтривайте стар ред само след проверка, с ssh-keygen -R.
  • Банерът с версията е публичен; защитата идва от актуализациите, а не от скриването.

Тест (quiz)

1. С какво сравнявате пръстовия отпечатък, който ssh показва при първата връзка?



2. Какво прави ~/.ssh/known_hosts?



3. Преинсталирали сте своя VPS и получавате "REMOTE HOST IDENTIFICATION HAS CHANGED". Каква е правилната последователност?



4. Защо първата проверка при trust on first use е толкова важна?



5. Какво показва банерът с версията на SSH сървър?



Задача

Задача Z1.3: SSH банер и пръстов отпечатък на Вашия сървър. Въведете адреса на Вашия сървър, версията на софтуера от банера (например OpenSSH_9.6p1) и пръстовия отпечатък ED25519, който сте извели в конзолата с ssh-keygen -lf. Програмата прави една връзка към Вашия SSH порт, прочита банера и host key и ги сравнява. Тя не влиза в сървъра.

Задача Z1.3: SSH банер и пръстов отпечатък на Вашия сървър

Ние не влизаме и не опитваме парола или ключ. Първо покажете, че сървърът е Ваш: щракнете върху "Покажете моя код" и поставете файл /.well-known/weboke-cursus-<code>.txt, съдържащ само този код, на уеб сървъра на Вашето име на хост. Изтегляме го директно от всеки IP адрес, който проверяваме (IPv4 и IPv6 поотделно); TXT запис тук не се зачита. Проверката идва от heavy.webawere.nl (185.158.167.16 и 2a07:ae80:100:0:185:158:167:16), а не от нашия уеб сървър. Само за регистрирани курсисти; най-много 6 проверки на час за сървър. При тази задача правим една връзка и четем само банера и ключа на сървъра; в лога Ви няма да се появи опит за вход.





Това, което въвеждате, и резултатите от проверката не се съхраняват. Браузърът Ви запомня отговорите и дали сте изпълнили задачата. Ако сте влезли, запазваме само дали задачата е била (почти) правилна в Моите курсове; и там можете да го изтриете.

Още за четене

Моля, изчакайте…

Настройте домейните си

За всеки домейн настройте сървърите за имена, връзката с хостинга и кой ще бъде собственикът.

Домейните Ви се зареждат…