Վերադառնալ
Ստեղծեք ձեր սեփական սերվերում գործող localhost թուղթը OpenSSH-ով և nginx-ով
SiTech AI Team2 րոպե ընթերցում

Ստեղծեք ձեր սեփական սերվերում գործող localhost թուղթը OpenSSH-ով և nginx-ով

Ինքնահոսթինգային կոնֆիգուրացիան OpenSSH-ի հեռահար վերահասցեավորումը միավորում է nginx-ի հետ՝ localhost-ի նախադիտումը հրապարակելու, wildcard TLS ավելացնելու և համավերած հղումները ժամկետային՝ հեշի վրա հիմնված մուտքի տվյալներով պաշտպանելու համար:

Տեղական նախադիտման վերահասցեավորում

localhost:8080-ում գործող բլոգի նախադիտումը կարող է համավերածվել ինքնահոսթինգային թուղթով՝ առանց գործառնական ծառայության։ Հրամանը ssh -N -R 0:localhost:8080 web02.luffy.cx OpenSSH-ին պահանջում է հեռահար պորտը վերահասցեավորել տեղական ծառայության։ Հեռահար պորտի 0 արժեքը սերվերին ստիպում է բաց թողնել ազատ պորտ, որը օրինակում 41535 է:

Հեռահար սերվերում nginx-ն ավարտում է HTTPS կապերը և պատկերում է հարցումները բաց թողնված loopback պորտով։ server-name արտահայտությունը թուղթի հոստնեյմից ստանում է պորտը, ինչը nginx-ին հնարավորություն է տալիս երթևեկությունը ճիշտ տեղական վերահասցեավորման վրայով անցկացնել։ Կոնֆիգուրացիան նաև պահանջում է wildcard DNS գրառում *.ssh.luffy.cx-ի համար և Let's Encrypt-ի wildcard սերտիֆիկատը:

Համավերած URL-ների պաշտպանություն

Լրացուցիչ պաշտպանության առանց բաց թողնված պորտը միակ գաղտնիքն է, որը պահում է բովանդակությունը փակ։ Կոնֆիգուրացիան բարելավում է մուտքի վերահսկումը ngx_http_secure_link_module-ով, որը հաշվում է հեշը հարցման արժեքներից և գաղտնի բանալուց։ Քանի որ base64-ով գաղտնագրված հեշը չի կարող տեղադրվել ռեգիստրի նկատմամբ զգայուն դոմենի անվան մեջ, այն ուղարկվում է HTTP Basic Authentication-ի օգտատիրոջ անվան մասով՝ ժամկետի ժամանակի նշանի հետ միասին:

Nginx-ն օգտատիրոջ անունը կարդում է $remote_user փոփոխականից։ map արտահայտությունը բաժանում է հեշը և ժամկետի ժամանակի նշանը միմյանցից, իսկ secure link արտահայտությունը ստուգման համար միավորում է ժամանակի նշանը, ստացված պորտը և կոնֆիգուրացված գաղտնի բանալին: Առկաչություն կամ սխալ հեշը առաջացնում է 401 պատասխանը WWW-Authenticate վերնագրով։ Ժամկետանց հղումը առաջացնում է 410 պատասխանը։ Մինչև ճիշտ հարցումը պրոքսի է անցնում, nginx-ն ջնջում է Authorization վերնագիրը և կոնֆիգուրացված է WebSocket կապերին աջակցելու համար:

Թուղթի հղումների գեներացում

Հղման հեշը գեներացվում է ժամկետի ժամանակի, պորտի և գաղտնի բանալու OpenSSL-ի MD5 և base64 գործողություններում կատարմամբ, այնուհետև արդյունքը վերածվում է URL-անվտանգ տոկենի։ Օգնական սկրիպտը օգտագործում է 86400 վայրկյան կյանքի տևողություն: Քանի որ OpenSSH-ն իր բաց թողնված պորտը չի ցույց տալիս միջավայրի փոփոխականով, սկրիպտը հետազոտում է ծնող գործընթացների հեշը՝ գտնելու sshd-session գործընթացները և դրանց մտնալու պորտերը:

Պորտերի ստացման հետո սկրիպտը յուրաքանչյուրի համար գեներացնում է պաշտպանված URL և սեսիան բաց է պահում։ http-over-ssh անվանումով SSH կոնֆիգուրացիայի գրառումը օգնականին գործարկում է հեռահար սերվերում։ Արդյունքում ստացված կոնֆիգուրացիան հիմնված է միայն OpenSSH-ի և այնտեղ արդեն գործող nginx-ի վրայով, իսկ առանձին NixOS կոնֆիգուրացիան հասանելի է NixOS-ում օգնականի կառավարման համար:

SSiTech

SiTech — AI-ով հզորացված վեբ մշակում

Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։