qubes-issues icon indicating copy to clipboard operation
qubes-issues copied to clipboard

Optional secure SSH between qubes

Open Martin-Buchholz opened this issue 6 months ago • 3 comments

How to file a helpful issue

The problem you're addressing (if any)

Many Qubes users are familiar with ssh and applications built on top of it. It is a foundation of secure computing outside of Qubes. It would be great if that could be used for communication between qubes as well, without giving up too much security for the added convenience.

The solution you'd like

Allow easy optional installation of ssh client and server, configured securely somehow to require explicit connectivity policy configuration using Qubes mechanisms (qrexec?), preferably without opening up non-ssh network connectivity between qubes.

The value to a user and who that user might be

Advanced users might want to:

  • Orchestrate collections of qubes from scripts in dom0, replacing qvm-run
  • use restic or rclone or rsync to back up to a "backup qube" over ssh or sftp

Completion criteria checklist

(This section is for developer use only. Please do not modify it.)

Martin-Buchholz avatar Jun 11 '25 17:06 Martin-Buchholz

So what you're proposing is for the implementation of user-friendly "SSH over qrexec"? (Just trying to clarify as I'm not fully sure).

Another useful thing to use this for could be SSHFS to mount folders between qubes..

Atrate avatar Jun 11 '25 20:06 Atrate

I'm a competent ssh user, not a competent Qubes developer ... but yes, "SSH over qrexec" sounds like a promising direction to implement this.

Martin-Buchholz avatar Jun 11 '25 20:06 Martin-Buchholz

As SSH is TCP based you can use the qvm-connect-tcp utility documented at: https://www.qubes-os.org/doc/firewall/#opening-a-single-tcp-port-to-other-network-isolated-qube

In my setup I use the permanent port binding configuration documented in that section to interconnect about 10 qubes. Most of those 10 qubes have no networking qube at all. That has worked flawlessly since I started using it a couple of years ago.

Your connectivity policy would then be configured using the RPC service setting for qubes.ConnectTCP.

ernst-qos avatar Jun 13 '25 13:06 ernst-qos