Skip to content

virtual kubelet: values for the ssh shadow's reverse tunnel - #58

Merged
dciangot merged 2 commits into
interlink-hq:mainfrom
matbun:feat/ssh-reverse-tunnel
Oct 28, 2026
Merged

dciangot merged 2 commits into
interlink-hq:mainfrom
matbun:feat/ssh-reverse-tunnel

Conversation

@matbun

@matbun matbun commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Part of interlink-hq/interLink#548. Values for interlink-hq/interLink#577.

virtualNode.network.ssh.reverse.* renders Network.SSH.Reverse: enabled, sshd (node or userspace), allowSocks (false by default), nodeExec, sshdPath and pythonPath. enabled and allowSocks are compared as strings, so a quoted "false" stays off, and the lint workflow checks that renders.


Related issue : interlink-hq/interLink#548

matbun and others added 2 commits October 28, 2026 14:53
virtualNode.network.ssh.reverse (enabled, nodeExec, sshdPath,
pythonPath) renders Network.SSH.Reverse in the virtual kubelet config
when enabled is true, and nothing otherwise. For interLink's reverse
tunnel over the ssh shadow (interlink-hq/interLink#548).

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Signed-off-by: Matteo Bunino <[email protected]>
The reverse tunnel changed in interLink: by default the compute node's
own sshd now binds each forward as a unix socket in the pod's socket
directory, and a relay the job starts serves it to the job's user only.
The user-space sshd is kept as a fallback for sites whose node sshd
refuses forwarding, and the SOCKS proxy, open to every user of the
node, is refused unless the virtual kubelet allows it. Surface both as
reverse.sshd (Network.SSH.Reverse.Sshd, omitted when unset) and
reverse.allowSocks (AllowSocks, rendered only when it is true).
allowSocks and reverse.enabled are both compared as strings, so a
quoted "false" can turn on neither the proxy nor the reverse tunnel.

The reverse comments are rewritten for the new shape: srun is a last
resort that delegates the Kerberos ticket to the login node and runs
execConnectCommand on the compute node (with the node's own sshd) in
either forwardMode, sshdPath is for the user-space sshd only,
pythonPath runs the relay, and the reverse tunnel needs SocketDirRoot
in the plugin, which the ssh example now says too.

The CI step that renders the ssh example now also sets the reverse
values and checks that they reach the config, that the default
allowSocks and a quoted "false" render no AllowSocks, and that a
quoted "false" for reverse.enabled renders no Reverse block.

Rendering the default values and the ssh example, with or without
reverse.enabled, is byte-identical to before. Part of
interlink-hq/interLink#548.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Signed-off-by: Matteo Bunino <[email protected]>
@matbun
matbun force-pushed the feat/ssh-reverse-tunnel branch from 6181b29 to 5df20a7 Compare October 28, 2026 13:53
@matbun
matbun marked this pull request as ready for review October 28, 2026 13:55
@matbun
matbun requested a review from dciangot as a code owner October 28, 2026 13:55
@dciangot
dciangot requested a balanced review from Copilot October 28, 2026 13:57

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@dciangot
dciangot merged commit 1dafd3d into interlink-hq:main Oct 28, 2026
4 checks passed
@matbun
matbun deleted the feat/ssh-reverse-tunnel branch October 30, 2026 12:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants