Quero poder iniciar uma sessão do tmux em um servidor remoto e usar as janelas nativas do iTerm2 e as telas divididas em minha máquina local.
Por exemplo, digamos que meu servidor remoto tenha uma sessão tmux em execução com uma janela com dois painéis. No iTerm2 da minha máquina local, quero dois painéis nativos do iTerm2, de modo que cada painel contenha um painel tmux diferente.
Isso é possível?
(Eu sei que o inverso é possível - pelo qual eu posso executar uma sessão tmux na minha máquina local e outra máquina verá minhas guias do iTerm2 como janelas, por exemplo. Mas isso parece meio inútil.)
ssh login@hostname -t 'tmux -CC attach'
e olhar para o menu shell-> tmux-> dashboard no iterm2.ssh login@hostname -t 'tmux -CC a -t sessionName'
Aqui está o que funcionou para mim, com as versões estáveis de lançamento de 16/12/2015, que são o iTerm 2.1.4 no OS X 10.11.2 e o tmux 1.9 no Raspbian Linux:
Primeiro use
.ssh/config
na sua máquina local e.ssh/authorized_keys
na sua máquina remota para configurar o login sem senha no sistema remoto. Depois que isso estiver configurado corretamente, você poderá fazer o login apenas fazendossh pi
(supondo quepi
seja o nome do host do seu sistema remoto).Crie um novo perfil do iTerm2 que, em vez de fazer um login no seu shell local, apenas chame
ssh pi
para fazer login na máquina remota. Para configurar isso, acesse: Preferences / Profiles / + / Command.Command = "ssh pi"Abra uma janela do iTerm2 na máquina remota através do seu novo perfil, executando: Profiles / Pi.
Na janela de login remoto do iTerm2, na linha de comando, faça:
tmux -CC
. Depois disso, sua janela do iTerm2 mostra o modo de comando tmux, o tmux cria uma nova sessão e o iTerm2 cria imediatamente uma nova janela do iTerm2 para essa sessão do tmux. Dentro dessa nova janela do iTerm2, a guia inicial do iTerm2 representa a única janela do tmux dessa sessão. Se você fizer o CMD-T, isso criará uma nova guia iTerm2, representando uma nova janela do tmux.Como você usa isso?
Neste ponto, você pode executar o "Shell / tmux / Dashboard" para observar o entendimento do iTerm2 das sessões e janelas existentes do tmux.
Se você fechar a janela do iTerm2 que representa a sessão tmux, ela matará a sessão subjacente e todas as suas janelas tmux.
Se você fechar a janela do iTerm2 mostrando o modo de comando tmux, parece que apenas mata a instância do cliente tmux que estava conectada a essa sessão, para que ambas as janelas do iTerm2 desapareçam, mas a sessão do tmux ainda está ativa e você pode se reconectar ao isto.
Se você quiser um desanexamento mais ordenado do tmux, basta fazer
ESC
na janela do modo de comando do tmux.Se, em vez de criar uma nova sessão do tmux, o que você queria originalmente era anexar a uma sessão existente, poderá fazer isso com
tmux -CC attach
.Em teoria, acho que deveria haver uma maneira de configurar o iTerm2 ou tmux para que, quando você se conectar ao sistema remoto, seja automaticamente conectado a qualquer sessão existente do tmux, mas não consegui fazer isso, modificando a linha de comando o perfil do iTerm2.
fonte
[[ $- == *i* && $SSH_TTY && -z $TMUX && ! -r ~/.notmux ]] && tmux attach-session && exit
no .bashrc (ou algo chamado a partir daí) Os testes são para: shell interativo, sessão do ssh, ainda não sendo executado no tmux, sem emergência, não faça-o Arquivo. Oexit
final fecha a conexão ao sair do tmux (principalmente para mim).