Integrazione server remoto, iTerm2 e tmux


30

Voglio essere in grado di avviare una sessione di tmux su un server remoto, quindi utilizzare le finestre native di iTerm2 e le schermate divise sul mio computer locale.

Ad esempio, supponiamo che il mio server remoto abbia una sessione tmux in esecuzione con una finestra con due riquadri. In iTerm2 sul mio computer locale, voglio due riquadri iTerm2 nativi in ​​modo tale che ciascun riquadro contenga un riquadro tmux diverso.

È possibile?

(So ​​che è possibile il contrario - per cui posso eseguire una sessione tmux sul mio computer locale e un altro computer vedrà le mie schede iTerm2 come Windows per esempio. Ma questo sembra un po 'inutile.)

Risposte:


40

Sì, è possibile, ma assicurati:

  • Per avere l'ultima versione di tmux installata da remoto
  • La versione più recente di iterm2 è installata localmente

Accedi tramite ssh login@hostname -t 'tmux -CC'e voilà - questo dovrebbe aprire la finestra iTerm2 sulla tua casella locale registrata nella casella remota.


5
inoltre, non dimenticare di riconnetterti per utilizzare ssh login@hostname -t 'tmux -CC attach'e guardare nel menu dash-> tmux-> dashboard in iterm2.
therealmarv,

1
ehi, ragazzi sapete come farlo con mosh invece di ssh? modifica: impossibile: github.com/mobile-shell/mosh/issues/640
fane89

1
Se si desidera connettersi e collegarsi a una sessione specifica, è possibile utilizzare quanto segue:ssh login@hostname -t 'tmux -CC a -t sessionName'
Jeremy Iglehart,

qualche possibilità di farlo funzionare con autossh o in qualche modo farlo resistere alle disconnessioni?
vigore

4

Ecco cosa ha funzionato per me, con le versioni di versione stabile dal 16-12-2015, che sono iTerm 2.1.4 su OS X 10.11.2 e tmux 1.9 su Raspbian Linux:

  1. Primo utilizzo .ssh/configsul computer locale e .ssh/authorized_keyssul computer remoto per configurare l'accesso senza password al sistema remoto. Una volta configurato correttamente, dovresti essere in grado di accedere semplicemente ssh pi(supponendo che pisia il nome host del tuo sistema remoto).

  2. Crea un nuovo profilo iTerm2 che, invece di effettuare un accesso alla shell locale, chiama solo ssh piper accedere al computer remoto. Per configurarlo, vai su: Preferenze / Profili / + / Command.Command = "ssh pi"

  3. Apri una finestra iTerm2 sul computer remoto tramite il tuo nuovo profilo, eseguendo: Profili / Pi.

  4. Nella finestra di login remoto iTerm2, nella riga di comando fare: tmux -CC. Successivamente, la finestra di iTerm2 mostra la modalità di comando tmux, tmux crea una nuova sessione e iTerm2 crea immediatamente una nuova finestra iTerm2 per quella sessione tmux. All'interno di quella nuova finestra iTerm2, la scheda iTerm2 iniziale rappresenta la singola finestra tmux di quella sessione. Se esegui CMD-T, verrà creata una nuova scheda iTerm2, che rappresenta una nuova finestra di tmux.

Come lo usi?

  • A questo punto puoi fare "Shell / tmux / Dashboard" per osservare la comprensione di iTerm2 delle sessioni e delle finestre di tmux esistenti.

  • Se chiudi la finestra iTerm2 che rappresenta la sessione tmux, uccide la sessione sottostante e tutte le sue finestre tmux.

  • Se chiudi la finestra iTerm2 che mostra la modalità di comando tmux, sembra che uccida solo l'istanza client tmux che era connessa a quella sessione, quindi entrambe le finestre iTerm2 scompaiono, ma la sessione tmux è ancora attiva e puoi ricollegarti a esso.

  • Se si desidera un distacco più ordinato da tmux, fare semplicemente ESCall'interno della finestra della modalità di comando tmux.

  • Se invece di creare una nuova sessione di tmux, quello che volevi originariamente era collegarti a una sessione esistente, puoi farlo con tmux -CC attach.

In teoria, penso che dovrebbe esserci un modo per configurare iTerm2 o tmux in modo che quando ti connetti al sistema remoto sei automaticamente collegato a qualsiasi sessione tmux esistente, ma non sono riuscito a farlo funzionare modificando la riga di comando in il profilo iTerm2.


Per connettersi automaticamente a una sessione tmux in esecuzione su login ssh, uso [[ $- == *i* && $SSH_TTY && -z $TMUX && ! -r ~/.notmux ]] && tmux attach-session && exitin .bashrc (o qualcosa che viene chiamato da lì) I test sono per: shell interattiva, sessione ssh, non già in esecuzione in tmux, nessuna emergenza-non-farlo-it file. Alla exitfine chiude la connessione all'uscita da tmux (principalmente un distacco per me).
fervente
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.