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.
Jawaban:
Anda dapat memberikan perintah ke ssh saat menghubungkan ke host jarak jauh. Sertakan
-t
opsi dengantmux attach-session
untuk terhubung ke sesi tmux jarak jauh:Posting ini pada melampirkan ke sesi tmux via ssh menjelaskan lebih detail.
sumber
ssh <remote host> -t /path/to/tmux a -t <my-session-name>
, membutuhkan tambahan-t
Jika masalah utama Anda adalah bahwa Anda harus mengetik
ssh remotehost
setiap kali Anda membuka jendela baru,default-command
opsi 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-r
menciptakan sesi baru di mana setiap jendela yang baru dibuka pertama kali mengeksekusissh remotehost
atas 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
ssh
pada setiap sesi pembuatan (bukan pada setiap pembuatan jendela) dan memulai sesi yang didedikasikan untuk host itu.Diperlukan sedikit waktu untuk mengeksekusi banyak
ssh
jika Anda mengaktifkan multiplexing SSH dalam konfigurasi ssh Anda. The.ssh/config
contoh adalah di bawah ini:Perhatikan bahwa pengaturan tmux ini tidak membuat sesi tmux di host jarak jauh. Jika koneksi ssh terputus, windows tmux yang terpengaruh tidak akan kembali.
sumber
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.
sumber
socat
menerobos masukssh
? 🙂tmate
mungkin menjadi alat terbaik untuk penanganan tmux jarak jauhJika 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
ssh
koneksi 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+b
pada 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.sumber