Saya ingin dapat memulai sesi tmux pada server jauh, dan kemudian menggunakan windows asli iTerm2 dan membagi layar pada mesin lokal saya.
Sebagai contoh, katakanlah server jarak jauh saya memiliki sesi tmux berjalan dengan satu jendela yang memiliki dua panel. Di iTerm2 di mesin lokal saya, saya ingin dua panel asli iTerm2 sehingga setiap panel berisi panel tmux yang berbeda.
Apakah ini mungkin?
(Saya tahu kebalikannya adalah mungkin - di mana saya dapat menjalankan sesi tmux pada mesin lokal saya dan mesin lain akan melihat tab iTerm2 saya sebagai windows misalnya. Tapi ini sepertinya tidak berguna.)
ssh login@hostname -t 'tmux -CC attach'
dan melihat ke menu dash-> tmux-> dashboard di iterm2.ssh login@hostname -t 'tmux -CC a -t sessionName'
Inilah yang bekerja untuk saya, dengan versi rilis stabil pada 2015-12-16, yaitu iTerm 2.1.4 pada OS X 10.11.2 dan tmux 1.9 pada Raspbian Linux:
Pertama kali digunakan
.ssh/config
pada mesin lokal Anda dan.ssh/authorized_keys
pada mesin jarak jauh Anda untuk mengonfigurasi login tanpa kata sandi ke sistem jarak jauh. Setelah ini dikonfigurasi dengan benar, Anda harus dapat login hanya dengan melakukanssh pi
(seandainyapi
adalah nama host dari sistem remote Anda).Buat profil iTerm2 baru yang, alih-alih melakukan login ke shell lokal Anda, hanya panggilan
ssh pi
untuk masuk ke mesin jarak jauh. Untuk mengonfigurasi ini, buka: Preferensi / Profil / + / Command.Command = "ssh pi"Buka jendela iTerm2 ke mesin jarak jauh melalui profil baru Anda, dengan melakukan: Profil / Pi.
Dalam iTerm2 jendela remote login, pada baris perintah lakukan:
tmux -CC
. Setelah ini, jendela iTerm2 Anda menunjukkan mode perintah tmux, tmux membuat sesi baru, dan iTerm2 segera membuat jendela iTerm2 baru untuk sesi tmux itu. Di dalam jendela iTerm2 baru itu, tab iTerm2 awal mewakili jendela tmux tunggal sesi itu. Jika Anda melakukan CMD-T, ini akan membuat tab iTerm2 baru, mewakili jendela tmux baru.Bagaimana Anda menggunakan ini?
Pada titik ini Anda dapat melakukan "Shell / tmux / Dashboard" untuk mengamati pemahaman iTerm2 tentang sesi dan jendela tmux yang ada.
Jika Anda menutup jendela iTerm2 yang mewakili sesi tmux, itu membunuh sesi yang mendasarinya dan semua jendela tmux itu.
Jika Anda menutup jendela iTerm2 yang menunjukkan mode perintah tmux, maka tampaknya hanya membunuh instance klien tmux yang terhubung ke sesi itu, sehingga kedua jendela iTerm2 Anda hilang, tetapi sesi tmux masih hidup dan Anda dapat melampirkan kembali ke saya t.
Jika Anda ingin pelepasan yang lebih teratur dari tmux, maka lakukan saja
ESC
di jendela mode perintah tmux.Jika alih-alih membuat sesi tmux baru, yang Anda inginkan awalnya adalah melampirkan ke sesi yang ada, maka Anda bisa melakukannya dengan
tmux -CC attach
.Secara teori, saya pikir harus ada cara untuk mengkonfigurasi iTerm2 atau tmux sehingga ketika Anda terhubung ke sistem jarak jauh Anda secara otomatis dilampirkan ke sesi tmux yang ada, tetapi saya tidak dapat membuatnya berfungsi dengan memodifikasi baris perintah di profil iTerm2.
sumber
[[ $- == *i* && $SSH_TTY && -z $TMUX && ! -r ~/.notmux ]] && tmux attach-session && exit
di .bashrc (atau sesuatu yang dipanggil dari sana) Tes untuk: shell interaktif, sesi ssh, belum berjalan di tmux, tidak ada keadaan darurat-jangan-lakukan-itu mengajukan. Padaexit
akhirnya menutup koneksi setelah keluar tmux (sebagian besar untuk saya).