Pasang sesi tmux ke mesin jarak jauh

31

Saya menggunakan tmux pada mesin lokal saya dan biasanya memiliki beberapa sesi secara bersamaan.

Apa yang biasanya saya lakukan adalah saya memiliki sesi dengan jendela yang berbeda untuk bekerja secara lokal dan sesi lain di mana saya menghubungkan beberapa jendela ke satu host per sesi.

Pohon sesi / jendela akan terlihat seperti ini dalam penggunaan sehari-hari yang saya buat dari 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
    \_ ...

Apakah ada cara untuk membuat sesi 2 & sesi 3 semacam sesi jarak jauh yang terhubung ke sesi tmux dibuat di somehost & someotherhost?

Pohon di atas akan terlihat seperti ini:

(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
    \_ ...

Saya menemukan topik ini tetapi saya tidak yakin ini yang ingin saya lakukan: Apakah berbagi soket tmux antara host mungkin?

Saya kira apa yang saya cari akan mengharuskan saya untuk memiliki konfigurasi tmux yang sama pada mesin lokal saya, somehost & someotherhost tetapi itu tidak akan menjadi masalah.

lilorox
sumber
Sudahkah Anda menemukan solusi untuk ini? Saya pikir memiliki sesi jarak jauh yang dapat Anda kelola seperti lokal adalah ide yang bagus, tetapi sepertinya jawaban yang dipilih paling tinggi sebenarnya bukan pertanyaan Anda
mbigras

Jawaban:

18

Anda dapat memberikan perintah ke ssh saat menghubungkan ke host jarak jauh. Sertakan -topsi dengan tmux attach-sessionuntuk terhubung ke sesi tmux jarak jauh:

ssh <remote host> -t tmux attach-session

Posting ini pada melampirkan ke sesi tmux via ssh menjelaskan lebih detail.

m__
sumber
18
Bukankah ini hanya memberi Anda sesi bersarang? Saya percaya apa yang OP coba lakukan adalah memiliki sesi jarak jauh muncul di samping sesi lokal mereka sehingga mereka dapat menavigasi dalam tmux's pilih-window / pilih-pohon.
stsquad
Jika ada lebih dari satu sesi yang dilampirkan pada host jarak jauh yang dapat Anda gunakan: ssh <remote host> -t tmux a -t <session-name>
user1757247
Saya melakukan beberapa pengeditan untuk memperbaiki masalah yang saya temui dan langkah demi langkah. Semoga peer review akan segera selesai. Ini berhasil ssh <remote host> -t /path/to/tmux a -t <my-session-name>, membutuhkan tambahan-t
Merlin
Saya memiliki pertanyaan yang sama dengan OP. Ini tidak menjawab pertanyaan saya. Ini menciptakan sesi tmux bersarang di mana saya harus meloloskan diri dari semua perintah tmux yang ingin saya kirim ke sesi itu. Saya ingin sesuatu di mana sesi jauh muncul di daftar sesi saya seperti sesi lokal.
Mahakuasa
2

Jika masalah utama Anda adalah bahwa Anda harus mengetik ssh remotehostsetiap kali Anda membuka jendela baru, default-commandopsi sesi mungkin merupakan solusi.

Secara otomatis menjalankan perintah yang Anda tentukan ketika Anda membuka jendela baru di sesi Anda mengaturnya.

Pengaturan sederhana di .tmux.conf:

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

Pengikatan kunci ini Ctrl-rmenciptakan sesi baru di mana setiap jendela yang baru dibuka pertama kali mengeksekusi ssh remotehostatas nama Anda.

Anda dapat memilih host yang akan dihubungkan pada waktu pembuatan sesi dengan pengaturan di bawah ini:

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

Yang ini menanyakan host yang ingin Anda lakukan sshpada setiap sesi pembuatan (bukan pada setiap pembuatan jendela) dan memulai sesi yang didedikasikan untuk host itu.

Diperlukan sedikit waktu untuk mengeksekusi banyak sshjika Anda mengaktifkan multiplexing SSH dalam konfigurasi ssh Anda. The .ssh/configcontoh adalah di bawah ini:

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

Perhatikan bahwa pengaturan tmux ini tidak membuat sesi tmux di host jarak jauh. Jika koneksi ssh terputus, windows tmux yang terpengaruh tidak akan kembali.

suatu hari nanti
sumber
1

Anda bisa menggunakan alat seperti socat untuk membuat terowongan unix domain socket yang digunakan oleh tmux ke mesin lokal Anda. Tetapi Anda benar-benar hanya menukar tunnel (ssh) untuk yang lain (socat) sehingga tidak benar-benar lebih baik, dan juga tidak aman.

belum dibuka
sumber
Mungkin socatmenerobos masuk ssh? 🙂
Mahakuasa
pada titik ini tmatemungkin menjadi alat terbaik untuk penanganan tmux jarak jauh
buka
0

Jika Anda berbicara tentang shell jarak jauh, berarti Anda dapat menjalankan perintah di sana, dengan kata lain, Anda memiliki akses langsung. Dalam hal ini Anda cukup menggunakan sshkoneksi untuk setiap jendela jarak jauh.

Anda dapat mengatakan sesuatu di sana seperti:

"Hei, tapi tidak ada cara untuk memiliki banyak jendela untuk setiap server jarak jauh!"

dan memang benar, karena pembatasan ssh. Tapi, Anda dapat memulai sesi tmux di masing-masing atau server jauh Anda. CATATAN: dalam hal ini Anda harus mengubah standar Ctrl+bpada mesin lokal untuk mencegah tabrakan.

Saya juga merekomendasikan Anda untuk menggunakannya tmuxinator, ini adalah alat yang sangat membantu jika Anda memperbaiki sesi tmux Anda setidaknya setiap hari.

Kehabisan waktu
sumber