我在 Raspberry Pi 上运行了一个 SSH 服务器,这样我和我的朋友就可以在上面进行对等编程(或者只是随便玩玩),但坦率地说,它太旧了,功能不足,除了托管几个 Git 存储库外,无法做任何有用的事情。是否可以将它用作某种代理来共享在我自己或我朋友的桌面上运行的会话?
到目前为止,我已经从我的桌面通过 SSH 连接到 Pi,启动一个会话让我的朋友加入,然后在该会话内从 Pi 通过 SSH 连接到我的桌面。我还通过该迷宫在我的桌面上启动了一个会话,这样我就可以在另一个本地终端上连接到它并使用它而没有任何延迟,但整个设置感觉非常笨重。
它的另一个问题是它需要在用户端设置端口转发;这对我来说不是问题,因为 Pi 在同一个 LAN 上,但我的朋友无法在他那边打开端口,所以他无法共享自己的工作区。
我以为我会很聪明,在安装有 SSHFS 的 Pi 上启动一个本地套接字,这样 Tmux 实际上就可以在本地运行但我的朋友可以访问,但遗憾的是它给了我一个“权限被拒绝”......事后看来,它可能无论如何都不会太稳定。
简而言之,有没有办法将我的本地 Tmux 会话转发到共享设备,以便其他用户可以访问它,而不必担心来回 SSH 或打开端口?
答案1
简而言之,有没有办法将我的本地 Tmux 会话转发到共享设备,以便其他用户可以访问它,而不必担心来回 SSH 或打开端口?
简而言之,不是;tmux 仅限于本地。
(这tmate
叉然而,似乎正是为此目的而构建的。它似乎使用云托管服务来共享连接。)
使用标准 tmux – 不用使用 Pi 作为代理,让你的朋友直接通过 SSH 连接到你的桌面,他的自己的用户帐户,并执行与当前相同的操作。
或者,直接授予他的帐户连接到您的 tmux 套接字文件的权限(您可能希望使用-S
选项以单独的套接字启动 tmux 来实现此目的)。最近的 tmux 版本具有用于多用户访问的附加功能;新server-access
命令可用于授予只读访问权限,而不是完全读写访问权限。
它的另一个问题是它需要在用户端设置端口转发;这对我来说不是问题,因为 Pi 在同一个 LAN 上,但我的朋友无法在他那边打开端口,所以他无法共享他自己的工作空间。
使用 VPN。如果您在计算机上设置了 OpenVPN 或 WireGuard,您的朋友就可以连接到您的 VPN 服务器(无需在他那边进行任何“端口转发”),然后您可以通过活动的 VPN 隧道连接到他的桌面。
有几种“网状”或“点对点”VPN 可以使这个过程更加简单,无需任何“服务器”设置(例如,通常的建议是 Tailscale 或 ZeroTier;它们都可以自动确定点对点连接)。
我以为我会很聪明,在安装有 SSHFS 的 Pi 上启动一个本地套接字,这样 Tmux 实际上就可以在本地运行但我的朋友可以访问,但遗憾的是它给了我一个“权限被拒绝”......事后看来,它可能无论如何都不会太稳定。
命名套接字仅存在于文件系统中名字;实际套接字操作不通过文件系统,因此它们也不会通过 SSHFS 或任何其他网络文件系统共享。(一些古老的网络文件系统(如 RFS)可以做到这一点,但所有当前的文件系统都不能做到这一点。它们被称为“当地的套接字”。)