SSH տեղական փոխանցում գոյություն ունեցող HTTP փոխանորդին՝ երկու loopback հասցե
SSH հոսթի վրա գոյություն ունեցող փոխանորդը կարող է սպասարկել մեկ հավելված մեկ տեղական փոխանցման միջոցով: Առանձին պահեք երկու loopback հասցեները և փոխանորդի արձանագրությունը:
Ձեր հաստատված փոխանորդն աշխատում է ցատկող հոսթի վրա, որտեղ լսում է միայն loopback-ում, ուստի այդ մեքենայից դուրս ոչինչ չի կարող հասնել դրան։ Ձեզ պետք չէ VPN կամ նոր փոխանորդ, ձեզ պետք է այդ մեքենայի մեկ պորտ՝ տեղափոխված ձեր մեկ պորտին։ Տեղական փոխանցումը հենց դա է անում, և դա պահանջում է մեկ հրաման գումարած հավելվածի մեկ կարգավորում։ Շփոթությունը սովորաբար առաջանում է նրանից, թե որ loopback հասցեն որ մեքենային է պատկանում։
Որոշեք՝ արդյոք ֆիքսված փոխանորդ արդեն գոյություն ունի
Այս տեխնիկան փոխանցում է ծառայություն, որն արդեն աշխատում է։ Եթե հեռավոր հոսթն ունի միայն SSH դեմոն և փոխանորդ չունի, փոխանցման ոչ մի քանակ չի ստեղծի այն, և միացումը կմերժվի հեռավոր կողմից։ Հաստատեք, որ փոխանորդը կապված է, ո՞րն է նրա պորտը, և արդյոք այն լսում է 127.0.0.1-ում, թե՞ կոնկրետ ինտերֆեյսի հասցեում, քանի որ հենց այդ հասցեն պետք է թիրախավորի փոխանցումը։
Սա նախօրոք հաստատելը ձեզ ազատում է այն թունելի վրիպազերծումից, որը երբեք ոչ մի բանի չի միացվել։
Կառուցեք փոխանցումը և կարդացեք հրամանը
Ձեզ անհրաժեշտ ձևը կապում է loopback պորտ ձեր նոթբուքում և միացնում այն սերվերի կողմից փոխանորդի հասցեին այնպես, ինչպես սերվերն է տեսնում այն։
ssh -NT -o ControlPath=none -o ExitOnForwardFailure=yes \
-L 127.0.0.1:13128:127.0.0.1:3128 [email protected]-N ընտրանքը ճնշում է հեռավոր հրամանը, իսկ -T ընտրանքը ճնշում է termios հատկացումը, որովհետև ձեզ պետք է թունել, ոչ թե shell։ Առաջին loopback հասցեն այն վայրն է, որտեղ լսում է նոթբուքը, իսկ երկրորդը լուծում է SSH սերվերը, ուստի 127.0.0.1-ն այնտեղ նշանակում է փոխանորդը այդ մեքենայում։ ExitOnForwardFailure ընտրանքը ստիպում է, որ հրամանը բարձրաձայն ձախողվի, եթե տեղական պորտն արդեն զբաղված է, փոխարենը սկսելու մի նստաշրջան, որ ոչինչ չի փոխանցում։ Գրեք նպատակակետ հասցեն այնպես, ինչպես սերվերն է լուծում այն, որովհետև անուն, որը կարող է լուծել միայն ձեր նոթբուքը, կձախողվի մյուս կողմում։
Սերվերի սեփական քաղաքականությունը գործում է նախքան սրանից որևէ բան կաշխատի։ AllowTcpForwarding ընտրանքը պետք է թույլատրի դա, իսկ PermitOpen ընտրանքը կարող է սահմանափակել, թե որ նպատակակետերին և պորտերին կարող է հասնել նստաշրջանը, ուստի փոխանցում, որը հաճախորդն ընդունում է, դեռ կարող է մերժվել սերվերի կողմից։ Մերժումը երևում է որպես փոխանցման կամ ալիքի սխալ հաճախորդի մոտ, և այդ հաղորդագրությունը կարդալն ավելի արագ է, քան հրամանը խմբագրելը։
Ուղղեք մեկ հավելված դեպի փոխանցումը
Կարգավորեք հավելվածը, որ օգտագործի HTTP փոխանորդ http://127.0.0.1:13128 հասցեում, հավատարմագրերով, եթե հեռավոր փոխանորդը պահանջում է դրանք։ Պահեք հավելվածի սեփական վկայագրերի ստուգումը HTTPS նպատակակետերի համար, քանի որ փոխանորդի թունելը չի փոխարինում այն։ Սա մեկ ծառայության ֆիքսված փոխանցում է, ուստի հավելվածին պետք է ասել փոխանորդի մասին, փոխարենը թողնելու, որ ինքն իրեն հայտնաբերի մեկը։
Արագ ստուգում նախքան որևէ մշտական կարգավորում՝ curl -x http://127.0.0.1:13128 -I https://example.com, որը վարժեցնում է HTTP CONNECT մեթոդը, որը փոխանորդը պետք է աջակցի։
Պահեք լիազորությունը այնտեղ, որտեղ այն եղել է
Հեռավոր փոխանորդը դեռ որոշում է, թե որ նպատակակետերն ու մեթոդներն է թույլատրում, և SSH մուտքը չպետք է լուռ տա յուրաքանչյուր հաշվի ընդհանուր վեբ ռելե։ Նոթբուքում 127.0.0.1-ին կապվելը խուսափում է պորտը ձեր տեղական ցանցում հրապարակելուց, և դա պորտը մասնավոր չի դարձնում նույն մեքենայի այլ գործընթացներից։ Այդ կապը wildcard հասցեով փոխարինելը՝ փոխանորդը կիսելու համար, հենց այն ձևն է, որով ստեղծվում է չկառավարվող բաց ռելե։
SSH տրանսպորտը պաշտպանում է ցատկը դեպի սերվեր։ Այդ կետից հետո փոխանորդը բացում է իր սեփական միացումը, ուստի դեպի նպատակակետ ուղղված պարզ HTTP հարցումը մնում է պարզ նաև սերվերից հետո, թեև առաջին հատվածը գաղտնագրված էր։
Ստուգեք երկու ծայրերը, ապա մաքրեք
Տեղական թունելի կարգավորումը և հեռավոր ծառայության հաջողությունը տարբեր արդյունքներ են, և հրամանի ելքի կարգավիճակը ձեզ ասում է միայն առաջինի մասին։ Ստուգեք, որ լսողը գոյություն ունի ss -ltn-ով, ապա կատարեք թույլատրված հավելվածի հարցում և մի հարցում, որը փոխանորդը պետք է մերժի։ Եթե երկուսն էլ իրենց պահում են ինչպես սպասվում է, ուղին իրական է, իսկ եթե թունելը աշխատում է, և ամեն հարցում ձախողվում է, փոխանորդը մերժում է կամ չի կարողանում հասնել նպատակակետին։
Երբ ավարտեք, կանգնեցրեք տիրապետող SSH գործընթացը, հեռացրեք փոխանորդի կարգավորումը հավելվածից և հաստատեք, որ տեղական պորտը գնացել է, փոխարենը թողնելու լսող, որը կապրի առաջադրանքից ավելի երկար։