Реле аркылуу коомдук SSH эки байланышсыз чекте ишке ашпайт, бирин оңдоо адатта экинчисин ачат. Же чет агымды ташуунун ордуна HTTP жообун кайтарат, же реле бэкенд окууга эч качан макул болбогон аталышты алдыга кошот. Кайсынысын көрүп жатканыңызды үч шарт аныктайт: коомдук жазуу чындыгында эмнени көрсөтөт, агым блогу жогоруга эмнени жиберет жана SSH кардары кайсы атты текшерет. Аларды ушул тартипте иштегиле.

Эки чек, эки белги

Четтеги бузулуу SSH баннери болушу керек жерге HTTP статус бети келгендей көрүнөт. Байланыш TCP деңгээлинде аяктайт жана алгачкы байттар веб-серверге таандык текст. Бул протокол шайкешсиздиги, жоголгон пакет эмес. Ал ошондой эле четтин ошол ат үчүн атайын башка нерсени сунуштап жатканын билдирет.

Жогорку агымдагы бузулуу башкача көрүнөт. Байланыш sshd-ге жетет, sshd күткөн идентификация алмашуусу эмес байттарды окуйт, жана сессия эч качан ачкыч сунуштабай өлөт же илинип калат.

Бул экөөнү чаташтыруу оңой, анткени экөө тең туташып, анан ишке ашпаган кардарды жаратат. Аларды айырмалаган биринчи протокол жообу болуп саналат, ошондуктан ал билетте болушу керек.

PROXY аталышы — билдирүү, которуштуруу эмес

Агым модулунда proxy_protocol on NGINX-ге пайдалуу жүктөмдөн мурун жогору жакка PROXY протокол аталышын жазууну буйруйт. Ал TCP проксисин күйгүзбөйт жана SSH шифрлөөсүнө эч кандай тиешеси жок. Бул кабыл алуучуга арналган жазуу. Эгер кабыл алуучу аны окуй албаса, ал агымдын башында таштандыга айланат.

Кабыл алуучу кызмат ошол аталышты атайын керектеши керек. Кадимки sshd байланыштын алгачкы байттары катары SSH идентификация алмашуусун күтөт, ошондуктан күтүлбөгөн киришүү кол алышууну бузулган серверге окшош турдо бузат.

stream {
    server {
        listen 2222;
        proxy_pass 10.77.0.20:22;
    }
}

Бул үзүндү VPN аркылуу жетүүгө боло турган бэкенд үчүн толук иштеген реле. Эч кандай PROXY көрсөтмөсү көрүнбөйт, анткени кабыл алуучу бул протоколду билбейт, жана бул жоктук — чечим, өткөрүп жиберүү эмес.

Эки багытты да өзүнчө карагыла. listen сабында proxy_protocol орнотуу NGINX өз кардары аталышты биринчи жиберет деп күтөт дегенди билдирет; аны кадимки SSH кардары үчүн күйгүзүү адамдар адатта чечүүгө аракет кылган маселенин так тескерисин жаратат.

Коомдук хост аты чындыгында кайда жетет

SSH сессиясындагы HTTP 400 бети чет жөнүндө далил. Жолдогу бир нерсе HTTP менен сүйлөшөт, жана бэкенддеги ачкыч же эсеп иши муну өзгөртпөйт. Чет чечилмейинче бэкенди өзгөртүүнү токтоткула.

Cloudflare'дин кадимки проксиленген жазуусу колдогон HTTP жана HTTPS трафигин белгиленген порттордо ташыйт. Хост аты үчүн проксини күйгүзүү жалпы TCP релесин жаратпайт, ал эми SSH-ти 443 портуна жылдыруу аны HTTPS кылбайт.

Эки иштөөгө жарактуу багыт бар. Тек DNS жазуусу өз TCP релесине көрсөтө алат, бул таасир этүү тууралуу чечимди сиздин колуңузда калтырат. Же SSH ташуусун ачык документтеген продуктуну колдонгула, анын өзүнүн келип чыгуу, кардар жана жетүү конфигурациясы менен.

Кайсынысын тандасаңыз да, релеге бэкендге VPN маршруту, уруксат берилген байланыш жана кайтуу жолу керек. Маршрут милдеттүү, анткени коомдук жагы иштейт.

SSH инсандыгын лакап ат аркылуу туруктуу кармагыла

Колдонуучулар адатта өздөрүнүн учурдагы хост атын теретүүнү уланткысы келет. SSH конфигурациясындагы лакап ат муну реледе эч нерсени өзгөртпөстөн жасай алат жана өзгөртүүнү өз орду — кардар тарабында калтырат.

Host git.example.com
    HostName ssh-entry.example.net
    Port 2222
    User git
    HostKeyAlias git.example.com

HostKeyAlias жок болсо, OpenSSH хост ачкычын туташкан атынын астынан издейт, ошондуктан жазуу жылат жана ар бир колдонуучу биринчи колдонууда ачкыч өзгөргөнү тууралуу эскертүү көрөт. Лакап атты орнотуу known-hosts жазууларын туруктуу кармайт, байланыш дагы эле релеге барат.

Бул лакап ат SSH негизиндеги алыскы кампаларга гана тиешелүү. HTTPS Git URL ага кайрылбайт жана кадимки алыскы URL сиз чындыгында даярдаган транспортко дал келиши керек.

Кылбашыңыз керек нерсе — эскертүү жоголушу үчүн хост ачкычын текшерүүнү өчүрүү. Бул багыттоо оңдоосу эч качан тийүүнү сурабаган коргоону алып салат жана көрүнүштүк ыңгайсыздыкты чыныгы таасир этүүгө айландырат.

Ар бир секирүүнү өзүнчө текшергиле

Коомдук угуучуну жалгыз сынагыла, анан реле хостунен реледен бэкендге байланышты, жана андан кийин гана кардарды учунан учуна сынагыла. Ошол үч сынактын ар бири башка катмарды жокко чыгарат. Бирөөнү өткөрүп жиберүү калган эки жыйынтыкты чечмелөөгө болбойт дегенди билдирет. Үч байкоо, бузулуу жашай турган үч орун.

Ар бир жыйынтык менен бирге багыттоо дарегин, портту жана алгачкы протокол байттарын сактагыла. Бул үчтүк чет катасын VPN маршруттоо маселесинен жана SSH аутентификация бузулушунан ажыратат, жана бул оңдоо менен божомолдун ортосундагы айырма.

Акырында, пландалган таасир этүүнү документтегиле. SSH-ти жеке бэкендге ташуучу TCP релеси коомдук периметрде атайын ачылган тешик жана башка ар кандай кирүүчү кызмат сыяктуу эле кароого татыктуу.

Тектеш макалалар