#SSH

cmux ssh បង្កើតកន្លែងធ្វើការសម្រាប់ម៉ាស៊ីនពីចម្ងាយ។ ផ្ទាំងកម្មវិធីរុករកតាមអ៊ីនធឺណិតឆ្លងកាត់បណ្តាញពីចម្ងាយ ឯកសារអូសនិងទម្លាក់តាមរយៈ scp ភ្នាក់ងារសរសេរកូដផ្ញើការជូនដំណឹងទៅកាន់របារចំហៀងក្នុងតំបន់របស់អ្នក ហើយវគ្គភ្ជាប់ឡើងវិញនៅពេលទម្លាក់។

#ការប្រើប្រាស់

cmux ssh user@remote
cmux ssh user@remote --name "dev server"
cmux ssh user@remote -p 2222
cmux ssh user@remote -i ~/.ssh/id_ed25519

cmux ssh អាន ~/.ssh/config របស់អ្នកសម្រាប់ឈ្មោះក្លែងក្លាយម៉ាស៊ីន ឯកសារអត្តសញ្ញាណ និងការកំណត់ប្រូកស៊ី។ ទង់ទាំងអស់ឆ្លុះបញ្ចាំងពីសមមូល ssh របស់ពួកគេ។

#ទង់ជាតិ

ទង់ជាតិការពិពណ៌នា
--nameកំណត់ចំណងជើងកន្លែងធ្វើការ
-p, --portច្រក SSH (លំនាំដើម 22)
-i, --identityផ្លូវទៅកាន់ឯកសារអត្តសញ្ញាណ
-o, --ssh-optionឆ្លងកាត់ជម្រើស SSH បំពាន (ឧ. -o StrictHostKeyChecking=no)
--no-focusបង្កើតកន្លែងធ្វើការដោយមិនចាំបាច់ប្តូរទៅវា។

ប្រើតំណភ្ជាប់ជ្រៅ cmux SSH នៅពេលដែលគេហទំព័រ ឬឧបករណ៍ចង់ផ្តល់ប៊ូតុង Open in cmux ។ តំណបើក cmux បង្ហាញប្រអប់បញ្ជាក់ បន្ទាប់មកដំណើរការពាក្យបញ្ជា cmux ssh ដែលសមមូលបន្ទាប់ពីអ្នកប្រើប្រាស់បញ្ជាក់។

cmux://ssh?host=dev.example.com
cmux://ssh?host=dev.example.com&user=alice&port=2222&title=GPU%20box
cmux://ssh?host=workspace123.vm-ssh.freestyle.sh&user=workspace123%2Csession-token
cmux://ssh?host=dev.example.com&host-key-policy=accept-new&no-focus=true

ប្រើ cmux.com fallback URL សម្រាប់ប៊ូតុងគេហទំព័រ។ វាបើកតំណដើម ហើយបង្ហាញការទាញយក ប្រសិនបើ cmux មិនត្រូវបានដំឡើង។

https://cmux.com/deeplink/ssh?host=workspace123.vm-ssh.freestyle.sh&user=workspace123%2Csession-token&title=Freestyle

ប៊ូតុងជម្រុញ និងច្បាប់ប្រើទម្រង់ជំនួសដូចគ្នា។ សញ្ញាក្បៀស សញ្ញាក្បៀស និងព្យញ្ជនៈបូកត្រូវបានរក្សានៅពេលដែលពួកវាត្រូវបានអ៊ិនកូដ URL៖

https://cmux.com/deeplink/prompt?text=Review%20this%20branch
https://cmux.com/deeplink/rules?name=freestyle&text=Prefer%20commas,%20colons:%20and%20small%20PRs

ប្រើរូបតំណាង SVG សម្រាប់ប៊ូតុងផ្ទាំងគ្រប់គ្រង ឬនិមិត្តសញ្ញា PNG នៅពេលដែលរូបភាពរ៉ាស្ទឺត្រូវបានទាមទារ៖

https://cmux.com/cmux-icon.svg
https://cmux.com/logo.png

បង្កើត URL ជំនួសដោយ URLSearchParams ដូច្នេះចំណងជើង ឈ្មោះក្លែងក្លាយម៉ាស៊ីន និងឈ្មោះអ្នកប្រើប្រាស់ត្រូវបានអ៊ិនកូដដោយសុវត្ថិភាព៖

const params = new URLSearchParams({
  host: "workspace123.vm-ssh.freestyle.sh",
  user: "workspace123,session-token",
  title: "Freestyle",
});

const href = "https://cmux.com/deeplink/ssh?" + params.toString();
ប៉ារ៉ាម៉ែត្រអត្ថន័យ
hostត្រូវការម៉ាស៊ីន SSH ឬ ~/.ssh/config alias ។
userអ្នកប្រើប្រាស់ SSH ស្រេចចិត្ត។ cmux ផ្សំវាជាមួយ host ជា user@host ។
portច្រក SSH ជាជម្រើស 1 ដល់ 65535។
title / nameចំណងជើងកន្លែងធ្វើការស្រេចចិត្ត។ ប្រើតែចំណងជើង ឬឈ្មោះមួយ។
connect-timeoutតម្លៃ ConnectTimeout ជាជម្រើសគិតជាវិនាទី ពី 1 ដល់ 600។
server-alive-intervalតម្លៃ ServerAliveInterval ជាជម្រើសគិតជាវិនាទី ពី 1 ដល់ 3600។
server-alive-count-maxជម្រើស ServerAliveCountMax តម្លៃ 1 ដល់ 100។
host-key-policyគោលការណ៍ StrictHostKeyChecking ជាជម្រើស៖ ទទួលយក-ថ្មី សួរ តឹងរឹង ឬបាទ។
no-focusប៊ូលីនស្រេចចិត្ត។ true បង្កើតកន្លែងធ្វើការដោយមិនប្តូរទៅវា។

ប្រើ cmux:// សម្រាប់កម្មវិធីដែលមានស្ថេរភាព cmux-nightly:// សម្រាប់ Nightly និង cmux-dev:// សម្រាប់ Debug ឬ tagged dev builds។

តំណភ្ជាប់ខាងក្រៅមិនអាចឆ្លងកាត់ឯកសារអត្តសញ្ញាណ ជម្រើស ssh ឆៅ ពាក្យបញ្ជា ProxyCommand ឬច្បាប់បញ្ជូនបន្ត។ ដាក់សោ, ProxyJump, HostName និងជម្រើសកម្រិតខ្ពស់នៅក្នុង ~/.ssh/config ជំនួសវិញ។ cmux បង្ហាញការមើលពាក្យបញ្ជាជាមុន ហើយតម្រូវឱ្យអ្នកប្រើប្រាស់ជឿជាក់លើគោលដៅ SSH មុនពេលភ្ជាប់។

#ផ្ទាំងកម្មវិធីរុករក

ផ្ទាំងកម្មវិធីរុករកតាមអ៊ីនធឺណិតនៅក្នុងកន្លែងធ្វើការពីចម្ងាយបញ្ជូនចរាចរ HTTP និង WebSocket ទាំងអស់តាមរយៈបណ្តាញរបស់ម៉ាស៊ីនពីចម្ងាយ។ វាយ localhost:3000 ហើយអ្នកកំពុងមើលម៉ាស៊ីនមេ dev ដែលដំណើរការលើប្រអប់ពីចម្ងាយ។ គ្មានទង់ -L គ្មានការបញ្ជូនបន្តច្រកដោយដៃ។ កន្លែងធ្វើការពីចម្ងាយនីមួយៗទទួលបានកន្លែងផ្ទុកខូគីដាច់ដោយឡែក ដូច្នេះវគ្គត្រូវបានកំណត់ក្នុងការតភ្ជាប់នីមួយៗ។

#អូសហើយទម្លាក់

អូសរូបភាព ឬឯកសារទៅក្នុងស្ថានីយពីចម្ងាយ ហើយ cmux បង្ហោះវាតាមរយៈ scp តាមរយៈការតភ្ជាប់ SSH ដែលមានស្រាប់។ cmux រកឃើញដំណើរការ SSH ផ្ទៃខាងមុខដោយ TTY ហើយបញ្ជូនការបង្ហោះតាមរយៈ ControlMaster multiplexing ។

#ការជូនដំណឹង

ដំណើរការនៅលើម៉ាស៊ីនពីចម្ងាយអាចដំណើរការពាក្យបញ្ជា cmux ដែលប្រតិបត្តិលើ instance មូលដ្ឋានរបស់អ្នក។ នៅពេលដែលភ្នាក់ងារសរសេរកូដហៅ cmux ជូនដំណឹងនៅលើប្រអប់ពីចម្ងាយ ការជូនដំណឹងនឹងបង្ហាញនៅក្នុងរបារចំហៀងក្នុងតំបន់របស់អ្នក។ ចិញ្ចៀនពណ៌ខៀវភ្លឺនៅលើផ្ទាំងកន្លែងធ្វើការ។ Cmd + Shift + U លោតទៅវា។ ការជូនដំណឹងសារឥតបានការពីការតភ្ជាប់មិនប្រក្រតីត្រូវបានទប់ស្កាត់ជាមួយនឹងការចុះត្រជាក់ក្នុងមួយម៉ាស៊ីន។

#ភ្នាក់ងារសរសេរកូដលើ SSH

cmux claude-teams និង cmux omo ទាំងពីរដំណើរការនៅក្នុងវគ្គ SSH ។ ដេមិន Go relay នៅលើម៉ាស៊ីនពីចម្ងាយគ្រប់គ្រងការបកប្រែ tmux-compat ដូចគ្នាដែល Swift CLI ក្នុងស្រុកធ្វើ។ ភ្នាក់ងារមិត្តរួមក្រុមបង្កើតបានជា cmux ដើមបំបែកនៅលើម៉ាស៊ីនមូលដ្ឋានរបស់អ្នក ខណៈពេលដែលការគណនាដំណើរការនៅលើប្រអប់ពីចម្ងាយ។

# Inside an SSH session:
cmux claude-teams
cmux omo

#ភ្ជាប់ឡើងវិញ

នៅពេលដែលការតភ្ជាប់ធ្លាក់ចុះ cmux ភ្ជាប់ឡើងវិញជាមួយនឹងការ backoff អិចស្ប៉ូណង់ស្យែល (3s, 6s, 12s, រហូតដល់ 60s)។ វគ្គពីចម្ងាយនៅតែបន្តកើតមាន ហើយ cmux ភ្ជាប់ម្តងទៀតនៅលើការភ្ជាប់ឡើងវិញ ដោយប្តូរទំហំជាមួយនឹងអត្ថន័យតូចបំផុតដែលឈ្នះអេក្រង់។ ជម្រើសរក្សាទុកលំនាំដើម (ServerAliveInterval=20, ServerAliveCountMax=2) ត្រូវបានចាក់ លុះត្រាតែការកំណត់របស់អ្នកកំណត់ពួកវារួចហើយ។

#ដេមិនបញ្ជូនត

នៅពេលភ្ជាប់ដំបូង cmux ស៊ើបអង្កេតម៉ាស៊ីនពីចម្ងាយ (unname -s, uname -m) ហើយបង្ហោះកំណែ cmuxd-remote binary ។ ប្រព័ន្ធគោលពីរនិយាយ JSON-RPC លើ stdio និងដោះស្រាយរឿងបីយ៉ាង៖

លក្ខណៈរបៀប
ប្រូកស៊ីចរាចរកម្មវិធីរុករកSOCKS5 និង HTTP Connect នៅលើប៉ុស្តិ៍ stdio របស់ដេមិន
ការបញ្ជូនត CLIផ្លូវរូងក្រោមដី TCP បញ្ច្រាសជាមួយការផ្ទៀងផ្ទាត់ HMAC-SHA256 ដូច្នេះដំណើរការពីចម្ងាយអាចហៅពាក្យបញ្ជា cmux ក្នុងស្រុក
ការគ្រប់គ្រងសម័យបន្តវគ្គឆ្លងកាត់ការភ្ជាប់ឡើងវិញ សម្របសម្រួល PTY ផ្លាស់ប្តូរទំហំតាមឯកសារភ្ជាប់ជាច្រើន។

daemon binary ត្រូវបានរក្សាទុកនៅ ~/.cmux/bin/cmuxd-remote/<version>/<os>-<arch>/cmuxd-remote នៅលើម៉ាស៊ីនពីចម្ងាយ និងបានផ្ទៀងផ្ទាត់ប្រឆាំងនឹងការបង្ហាញ SHA-256 ដែលបានបង្កប់នៅក្នុងកម្មវិធី។