远程服务器,iTerm2和tmux集成


30

我希望能够在远程服务器上启动tmux会话,然后在本地计算机上使用iTerm2的本机窗口和分屏。

例如,假设我的远程服务器有一个tmux会话,运行一个窗口有两个窗格。在本地计算机上的iTerm2中,我需要两个本机iTerm2窗格,以便每个窗格包含一个不同的tmux窗格。

这可能吗?

(我知道相反的情况是可能的,因为我可以在本地计算机上运行tmux会话,而另一台计算机将把iTerm2选项卡显示为Windows。但是,这似乎没有用。)

Answers:


40

是的,有可能,请确保:

  • 远程安装最新版本的tmux
  • 在本地安装了最新版本的iterm2

通过ssh login@hostname -t 'tmux -CC'和登录-在登录到远程邮箱的本地邮箱上,这将打开iTerm2窗口。


5
也不要忘记重新连接使用ssh login@hostname -t 'tmux -CC attach'并查看iterm2中的shell-> tmux-> dashboard菜单。
therealmarv

1
嘿,你们知道如何用mosh而不是ssh吗?编辑:这是不可能的:github.com/mobile-shell/mosh/issues/640
fane89 '18

1
如果要连接并附加到特定会话,则可以使用以下内容:ssh login@hostname -t 'tmux -CC a -t sessionName'
Jeremy Iglehart

有机会使其与autossh一起使用还是以某种方式使其能够抵抗断开连接?
igor

4

这是对我有用的,具有2015年12月16日的稳定发行版,即OS X 10.11.2上的iTerm 2.1.4和Raspbian Linux上的tmux 1.9:

  1. 首先.ssh/config在本地计算机和.ssh/authorized_keys远程计算机上使用,以配置无密码登录远程系统。配置正确后,您应该仅能通过登录ssh pi(假设pi是远程系统的主机名)进行登录。

  2. 创建一个新的iTerm2配置文件,该配置文件仅调用ssh pi登录到远程计算机,而不是登录到本地Shell 。要进行配置,请进入:首选项/配置文件/ + / Command.Command =“ ssh pi”

  3. 通过执行以下操作,通过新的配置文件打开到远程计算机的iTerm2窗口:Profiles / Pi。

  4. 在“ iTerm2远程登录”窗口中,在命令行中执行:tmux -CC。此后,您的iTerm2窗口将显示tmux命令模式,tmux将创建一个新的会话,iTerm2立即为该tmux会话创建一个新的iTerm2窗口。在该新iTerm2窗口中,初始iTerm2选项卡表示该会话的单个tmux窗口。如果您执行CMD-T,这将创建一个新的iTerm2选项卡,代表一个新的tmux窗口。

你怎么使用这个?

  • 此时,您可以执行“ Shell / tmux /仪表板”,以观察iTerm2对现有tmux会话和窗口的理解。

  • 如果关闭代表tmux会话的iTerm2窗口,它将杀死基础会话及其所有tmux窗口。

  • 如果您关闭显示tmux命令模式的iTerm2窗口,那么它似乎只是杀死了连接到该会话的tmux客户端实例,因此您的iTerm2窗口都消失了,但是tmux会话仍然有效,您可以重新连接到它。

  • 如果要与tmux进行更有序的分离,则只需ESC在tmux命令模式窗口中进行即可。

  • 如果您不是要创建新的tmux会话,而是要附加到现有会话,则可以使用进行操作tmux -CC attach

从理论上讲,我认为应该有一种配置iTerm2或tmux的方法,以便当您连接到远程系统时,您会自动连接到任何现有的tmux会话,但是我无法通过修改命令行来使它正常工作iTerm2配置文件。


为了在ssh登录时自动连接到正在运行的tmux会话,我[[ $- == *i* && $SSH_TTY && -z $TMUX && ! -r ~/.notmux ]] && tmux attach-session && exit在.bashrc(或从那里调用的东西)中使用了这些测试:文件。将exit在年底关闭在退出TMUX连接(主要是我的一个分离)。
zany
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.