我有一个 ubuntu 桌面,我可以通过 ssh 从我的 macbook pro 连接到它。我经常需要多个物理窗口通过 ssh 连接到桌面,也许是为了并排设置代码或诸如此类。有没有办法可以实现这一点,而不必通过 ssh 为每个物理窗口输入密码?
我不想使用无密码的 ssh。我认为 GNU screen 不是我想要的(即在单个终端内有多个虚拟终端)。
答案1
是的,SSHv2 支持通过同一连接进行多个会话。OpenSSH 以“多路复用主控”的形式支持此功能。
在中
~/.ssh/config
,设置套接字路径模板:Host * ControlPath ~/.ssh/S.%l.%r@%h:%p ControlMaster auto
启用多路复用连接:
-M
通过添加(master) 选项手动启动主连接ssh
。这种组合
ssh -fNM
可能很有用,可以让主人立即进入后台。$ ssh -fNM <host>
为了自动执行此操作(仅限 OpenSSH 5.6 及以上版本),请
ControlPersist
在您的中设置~/.ssh/config
:Host * ControlPersist 10m
使用此选项,将自动启动主连接,并且该
-M
选项是不必要的。
只需在新终端窗口中运行即可打开其他连接。这也适用于、以及使用 SSH 的任何其他程序。
ssh host
sftp
scp
当
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 &
再次运行。
可能出现的问题:
根据您的配置,您可能需要通过执行以下操作来允许访问您的 X 会话(在 Mac 上):
user@mac $ xhosts +
然后您可以通过以下方式撤消此操作:
user@mac $ xhosts -
检查 Ubuntu 机器的 ssh 配置文件(
/etc/ssh/sshd_config
),以确保此行存在且未被注释:X11Forwarding yes
我认为这在 OS X 中是开箱即用的。如果不行,您可能必须在 Mac 上运行 X 会话。
答案3
一种简单的方法是将终端从 Ubuntu 导出到 Mac。
然后您需要对另一个终端窗口执行的操作类似于xterm &
。