如何为 ssh 会话获取多个物理窗口?

如何为 ssh 会话获取多个物理窗口?

我有一个 ubuntu 桌面,我可以通过 ssh 从我的 macbook pro 连接到它。我经常需要多个物理窗口通过 ssh 连接到桌面,也许是为了并排设置代码或诸如此类。有没有办法可以实现这一点,而不必通过 ssh 为每个物理窗口输入密码?

我不想使用无密码的 ssh。我认为 GNU screen 不是我想要的(即在单个终端内有多个虚拟终端)。

答案1

是的,SSHv2 支持通过同一连接进行多个会话。OpenSSH 以“多路复用主控”的形式支持此功能。

  1. 在中~/.ssh/config,设置套接字路径模板:

    Host *
        ControlPath ~/.ssh/S.%l.%r@%h:%p
        ControlMaster auto
    
  2. 启用多路复用连接:

    • -M通过添加(master) 选项手动启动主连接ssh

      这种组合ssh -fNM可能很有用,可以让主人立即进入后台。

      $ ssh -fNM <host>
      
    • 为了自动执行此操作(仅限 OpenSSH 5.6 及以上版本),请ControlPersist在您的中设置~/.ssh/config

      Host *
          ControlPersist 10m
      

      使用此选项,将自动启动主连接,并且该-M选项是不必要的。

  3. 只需在新终端窗口中运行即可打开其他连接。这也适用于、以及使用 SSH 的任何其他程序。ssh hostsftpscp

  4. ControlPersist正在使用时,主连接将在不再需要时自动关闭。(在上面的例子中,10m是十分钟。)

    否则,使用手动停止主服务器。这将终止与该主机的所有连接。ssh host -O exit

有关详细信息,请参阅For more information, seeSSH(1)-O选项)和ssh_配置(5)Control*选项)。


注意:编辑时.ssh/config,请确保主机特定部分放在第一位,Host *并且最后的部分。

答案2

您可以使用 来执行此操作ssh -Y。来自 ssh 手册页:

 -Y      Enables trusted X11 forwarding.  Trusted X11 forwardings are not
         subjected to the X11 SECURITY extension controls.

因此,假设您像这样登录到 Ubuntu 机器:

$ ssh -Y user@ubuntu

然后您将在远程计算机上看到一个提示符。不要在该提示符上工作,而是启动终端仿真器,例如 gnome-terminal、xterm、aterm、terminator 等:

user@ubuntu $ gnome-terminal &

然后会打开一个 gnome-terminal 实例,它会出现在你的 mac 屏幕上。你可以在那里工作,每次你想要一个新的终端时都可以gnome-terminal &再次运行。


可能出现的问题:

  1. 根据您的配置,您可能需要通过执行以下操作来允许访问您的 X 会话(在 Mac 上):

    user@mac $ xhosts +
    

    然后您可以通过以下方式撤消此操作:

    user@mac $ xhosts -
    
  2. 检查 Ubuntu 机器的 ssh 配置文件(/etc/ssh/sshd_config),以确保此行存在且未被注释:

    X11Forwarding yes
    
  3. 我认为这在 OS X 中是开箱即用的。如果不行,您可能必须在 Mac 上运行 X 会话。

答案3

一种简单的方法是将终端从 Ubuntu 导出到 Mac。
然后您需要对另一个终端窗口执行的操作类似于xterm &

相关内容