दूरस्थ मशीन में tmux सत्र संलग्न करें


31

मैं अपने स्थानीय मशीन पर tmux का उपयोग कर रहा हूं और आमतौर पर एक साथ कई सत्र होते हैं।

मैं आमतौर पर क्या करता हूं मेरे पास स्थानीय रूप से काम करने के लिए अलग-अलग खिड़कियों के साथ एक सत्र है और अन्य सत्र जिनमें मैं प्रति सत्र एक मेजबान के लिए कई खिड़कियां जोड़ता हूं।

एक सत्र / खिड़की का पेड़ इस तरह से दैनिक उपयोग में दिखता है जैसे मैं tmux बनाता हूं:

(TMUX on my local machine)
 |
 +- session 1: local
 |  \_ window 1: local shell
 |  \_ window 2: local shell
 |  \_ ...
 |
 + session 2: somehost
 |  \_ window1: ssh user@somehost
 |  \_ window2: ssh user@somehost
 |  \_ ...
 |
 + session 3: someotherhost
    \_ window1: ssh user@someotherhost
    \_ window2: ssh user@someotherhost
    \_ ...

क्या सत्र २ और सत्र ३ बनाने का कोई तरीका है जो किसी प्रकार के दूरस्थ सत्र को जोड़ने के लिए है, जो किसी ट्विहट और someotherhost पर निर्मित tmux सत्र से जुड़ता है?

उपरोक्त पेड़ इस तरह दिखेगा:

(TMUX on my local machine)
 |
 +- session 1: local
 |  \_ window 1: local shell
 |  \_ window 2: local shell
 |  \_ ...
 |
 + session 2 linked to an existing session on somehost
 |  \_ window1: shell on somehost
 |  \_ window2: shell on somehost
 |  \_ ...
 |
 + session 3 linked to an existing session on someotherhost
    \_ window1: shell on someotherhost
    \_ window2: shell on someotherhost
    \_ ...

मुझे यह विषय मिला लेकिन मुझे यकीन नहीं है कि यह वही है जो मैं करना चाहता हूं: क्या मेजबानों के बीच एक tmux सॉकेट साझा करना संभव है?

मुझे लगता है कि मैं जिस चीज की तलाश कर रहा हूं, मुझे अपने स्थानीय मशीन, उसीहोस्ट और someotherhost पर एक ही tmux कॉन्फ़िगरेशन की आवश्यकता होगी, लेकिन यह समस्या नहीं होगी।


क्या आपने इसके लिए वर्कअराउंड का पता लगाया है? मुझे लगता है कि यह एक दूरस्थ सत्र है जिसे आप प्रबंधित कर सकते हैं जैसे कि यह स्थानीय विचार है, लेकिन यह ऐसा लगता है कि उच्चतम मतदान वाला उत्तर वास्तव में आपके प्रश्न का नहीं है
mbigras

जवाबों:


18

दूरस्थ होस्ट से कनेक्ट होने पर आप ssh को कमांड दे सकते हैं। दूरस्थ tmux सत्र से कनेक्ट करने का -tविकल्प शामिल करें tmux attach-session:

ssh <remote host> -t tmux attach-session

Ssh के माध्यम से tmux सत्र में संलग्न होने पर यह पोस्ट इसे और अधिक विस्तार से बताती है।


18
क्या यह सिर्फ आपको एक नेस्टेड सत्र नहीं देता है? मुझे विश्वास है कि ओपी क्या करने की कोशिश कर रहा है, ताकि उनके स्थानीय सत्र के साथ-साथ दूरस्थ सत्र भी दिखाई दे, ताकि वे एक tmux के चुनिंदा विंडो / चयन-ट्री के भीतर नेविगेट कर सकें।
stsquad

यदि दूरस्थ होस्ट में एक से अधिक सत्र संलग्न हैं जिनका आप उपयोग कर सकते हैं: ssh <दूरस्थ होस्ट> -t tmux a -t <सत्र-नाम>
user1757247

मैंने एक समस्या को ठीक करने के लिए कुछ संपादन किए और एक चरण-दर-चरण मैंने किया। उम्मीद है कि सहकर्मी की समीक्षा जल्द ही समाप्त हो जाएगी। यह काम किया ssh <remote host> -t /path/to/tmux a -t <my-session-name>, एक अतिरिक्त की जरूरत है-t
मर्लिन

मैं ओपी के रूप में एक ही सवाल है। यह मेरे सवाल का जवाब नहीं है। यह एक नेस्टेड tmux सेशन बनाता है, जहां मुझे उस सेशन में भेजे जाने वाले सभी tmux कमांड से बचकर निकलना होता है। मैं कुछ ऐसा चाहता हूं जहां स्थानीय सत्र की तरह ही मेरी सत्र सूची में दूरस्थ सत्र दिखाई दे।
सर्वव्यापी

2

यदि आपकी मुख्य समस्या यह है कि आपको ssh remotehostनई विंडो खोलने के लिए हर बार टाइप करना है , तो default-commandसत्र विकल्प एक वैकल्पिक हल हो सकता है।

जब आप अपने द्वारा सेट किए गए सत्रों में नई विंडो खोलते हैं तो यह आपके द्वारा निर्दिष्ट कमांड को स्वचालित रूप से निष्पादित करता है।

इसमें एक साधारण सेटिंग .tmux.conf:

bind-key C-r new-session ssh remotehost \; set-option default-command "ssh remotehost"

यह कुंजी बाइंडिंग Ctrl-rएक नया सत्र बनाती है जहाँ हर नई खुलने वाली विंडो सबसे पहले ssh remotehostआपकी ओर से निष्पादित होती है।

आप नीचे दिए गए सेटिंग्स के साथ सत्र सृजन समय में कटौती करने के लिए मेजबान चुन सकते हैं:

bind-key C-r command-prompt "new-session -s %1 ssh %1 \; set-option default-command \"ssh %1\""

यह आपको उस होस्ट से पूछता है जिसे आप sshप्रत्येक सत्र निर्माण (प्रत्येक विंडो निर्माण पर नहीं) में करना चाहते हैं और उस होस्ट को समर्पित सत्र शुरू करता है।

sshयदि आप SSH मल्टीप्लेक्सिंग को अपने ssh कॉन्फिगरेशन में सक्षम करते हैं, तो इसे निष्पादित करने में बहुत कम समय लगता है । .ssh/configउदाहरण नीचे है:

Host remotehost
    ControlMaster auto
    ControlPath ~/.ssh/mux-%r@%h:%p
    ControlPersist 10

ध्यान दें कि यह tmux सेटिंग दूरस्थ होस्ट में tmux सत्र नहीं बनाती है। यदि ssh कनेक्शन खो गया है, तो प्रभावित tmux विंडोज़ कभी वापस नहीं आती है।


1

आप अपने स्थानीय मशीन पर tmux द्वारा उपयोग किए जाने वाले यूनिक्स डोमेन सॉकेट को सुरंग के लिए सोसाइटी जैसे उपकरण का उपयोग कर सकते हैं। लेकिन आप वास्तव में एक और (समाज) के लिए एक सुरंग (एसएचएस) की अदला-बदली कर रहे हैं, इसलिए यह वास्तव में बेहतर नहीं है, और असुरक्षित भी है।


शायद सुरंग के socatमाध्यम से ssh? If
सर्वव्यापी

इस बिंदु पर tmateदूरस्थ tmux से निपटने के लिए सबसे अच्छा उपकरण हो सकता है
untore

0

यदि आप दूरस्थ शेल के बारे में बात कर रहे हैं, तो आपका मतलब है कि आप वहां कमांड निष्पादित कर सकते हैं, दूसरे शब्दों में, आपकी सीधी पहुंच है। इस मामले में आप बस sshप्रत्येक दूरस्थ विंडो के लिए कनेक्शन का उपयोग कर सकते हैं।

आप कुछ इस तरह बता सकते हैं:

"अरे, लेकिन प्रत्येक दूरस्थ सर्वर के लिए कई विंडो रखने का कोई तरीका नहीं है!"

और यह सच है, ssh प्रतिबंधों के कारण। लेकिन, आप प्रत्येक या अपने दूरस्थ सर्वर पर tmux सत्र शुरू कर सकते हैं। नोट: इस मामले में आपको Ctrl+bटकराव को रोकने के लिए स्थानीय मशीन पर डिफ़ॉल्ट को रिबंड करने की आवश्यकता है ।

इसके अलावा, मैं आपको उपयोग करने के लिए फिर से तैयार करता हूं tmuxinator, यह बहुत ही उपयोगी उपकरण है यदि आप कम से कम हर दिन अपने tmux सत्र को रोकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.