Վերադառնալ
Fly.io-ի վերլուծությունը՝ VSCode-ի SSH գործակալը շատ ավելի ներխուժող է, քան թվում է
SiTech AI Team2 წთ. საკითხავი

Fly.io-ի վերլուծությունը՝ VSCode-ի SSH գործակալը շատ ավելի ներխուժող է, քան թվում է

Fly.io-ի ինժեներ Թոմաս Փթասեքը վերլուծել է, թե ինչպես է VSCode-ը խմբագրում ֆայլերը հեռավոր սերվերներում. Bash-սկրիպտը տեղադրում է գործակալ՝ Node-ով, որը WebSocket է բացում խմբագրիչի հետ և կարող է փոփոխել ֆայլեր, գործարկել shell։

Fly.io-ի ինժեներ Թոմաս Փթասեքը հրապարակել է մանրամասն վերլուծություն այն մասին, թե ինչպես է VSCode-ը SSH-ի միջոցով խմբագրում ֆայլեր հեռավոր մեքենաներում։ Նրա նկարագրությամբ՝ այս մեխանիզմը շատ ավելի խորն է միջամտում սերվերին, քան իր ավելի հին նմանօրինակը՝ Emacs-ի Tramp-ը։ «VSCode's SSH Agent Is Bananas» վերնագրով գրառումը Fly-ի բլոգում լույս է տեսել 2025 թվականի փետրվարի 7-ին։

Ինչո՞ւ Fly.io-ն հետաքրքրվեց

Fly.io-ն ուզում է, որ իր հարթակը ներգրավվի նույն գործընթացում, որն VSCode-ն օգտագործում է հեռավոր խմբագրման համար. ծրագրավորողների մեծ մասն այժմ աշխատում է VSCode-ով, այդ թվում՝ LLM-ներով կոդ գեներացնող տարբերակներով։ LLM-ի գրած կոդը շատ ավելի օգտակար է դառնում, երբ փակված է մոդելի և կատարման միջավայրի միջև հետադարձ կապի ցիկլը. մոդելը գրում է կոդ, գործակալն այն գործարկում է, սխալները վերադառնում են մոդելին, և գործընթացը կրկնվում է։ Փթասեքի խոսքով՝ նման ցիկլի գործարկումը սեփական նոթբուքում խելամիտ չէ, որովհետև LLM-ները սահմաններ չեն ճանաչում և նույն հաջողությամբ «վերամշակում են» թե՛ ընթացիկ նախագիծը, թե՛ համակարգի կարգավորումները։ Ավելի ապահով վայր է մաքուր Linux-ի օրինակը, որը միանում է վայրկյանների ընթացքում։

Tramp-ը և VSCode-ի գործակալը

Emacs-ի Tramp-ը հեռավոր խմբագրման «հոգևոր նախահայրն» է. բավական է այն միացնել ինտերակտիվ միջավայրին՝ սովորաբար SSH-ի սեսիային, որտեղ հնարավոր է գործարկել Bourne shell-ի հրամաններ, և Tramp-ը Emacs-ը կընդլայնի այդ միջավայրի վրա՝ օգտագործելով այն, ինչ արդեն կա հեռավոր սերվերում։ VSCode-ն էլ նման գործառույթ ունի. տրամաբանական կլիներ, որ դա լիներ պարզեցված Tramp՝ Elisp-ի փոխարեն TypeScript-ով։ Սակայն, ըստ Փթասեքի, VSCode-ը «լայնածավալ ներխուժում» է ձեռնարկում. Bash-սկրիպտը հեռավոր սերվեր է ներբեռնում գործակալ՝ ներառյալ Node-ի բինար տեղադրումը։ Գործակալն աշխատում է պորտերի վերահասցեավորմամբ SSH-ի միջով և WebSocket-կապ է բացում դեպի գործող VSCode-ի ինտերֆեյս։

Ինչ կարող է անել գործակալը

Այդ կապի արձանագրությունը կարող է ազատ տեղաշարժվել ֆայլային համակարգում, խմբագրել ցանկացած ֆայլ, գործարկել սեփական shell-ի PTY-գործընթացներ և հաստատվել սերվերի վրա։ Փթասեքը նշում է, որ անվտանգության ոլորտում նման գործիքների համար անվանում կա, սակայն այն բարձրաձայն չի ասում. միայն նշում է, որ անունը կրծողների ընտանիքից է՝ թափանցիկ ակնարկ հեռավոր մուտքի տրոյանին։

Գործնական եզրակացություն

Փթասեքն ասում է, որ մշակման սերվերներում VSCode-ով հեռավոր խմբագրումը իրեն «մի փոքր կանհանգստացնի», իսկ production-ի համակարգում ինցիդենտի ժամանակ՝ «կզայրացնի»։ Գրառումն ավարտվում է գործնական դիտարկմամբ. Fly.io-ն պարզել է, որ VSCode-ում Fly Machine-ի հետ սեփական կապ ստեղծելու համար այս ամենն իմանալ պետք չէ։ Բացահայտումը չխանգարեց նրանց աշխատանքին. նրանք պարզապես արժանի համարեցին այն կիսել։

SSiTech

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

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