Skip to content

X11 forwarding should use network instead of unix socket and support being forwarded multiple times #14198

Closed
@mafredri

Description

@mafredri

Our current X11 forwarding implementation (in agentssh) uses Unix socket forwarding and places the socket file in /tmp/.X11-unix/X0.

New SSH connections overwrite the socket and take over communication. This means that connecting with ssh -X twice, then disconnecting from the newest session will also disconnect the old session.

OpenSSH typically does X11 forwarding over port 6000 and up, and generally starting from an offset of 10 (i.e. 6010). For OpenSSH the DISPLAY env looks commonly like: DISPLAY=localhost:10.0 (referring to port 6010), whereas agentssh always sets this to DISPLAY=:0.0 (referring to /tmp/.X11-unix/X0).

The agentssh behavior is problematic in a few situations:

  1. The agent doesn't have permission to write to /tmp/.X11-unix
  2. There's an X server running inside the workspace (will have allocated /tmp/.X11-unix/X0 already)
  3. The user wants the X11 connection to remain open even if other SSH sessions are closed

I propose we implement the listening port + start offset to avoid the conflict listed in 2.

An alternative method is to try /tmp/.X11-unix/X[0-9]+ until we find the next free slot and set the DISPLAY environment variable accordingly. (And if we use an offset it's unlikely to collide with X running in the workspace.)

Please note that ssh.X11.ScreenNumber in x11Callback should not decide the number we use in the workspace, it should be the next free port or file.

Activity

added a commit that references this issue on Sep 4, 2024
3a163aa
added 5 commits that reference this issue on Sep 4, 2024
175e119
9d3f404
8fdf92f
f6f2964
8f07d33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions

    X11 forwarding should use network instead of unix socket and support being forwarded multiple times · Issue #14198 · coder/coder