[libvirt PATCH 0/9] remote: introduce a custom netcat impl for ssh tunnelling

Michal Privoznik mprivozn at redhat.com
Fri Jul 10 12:04:04 UTC 2020


On 7/9/20 8:36 PM, Daniel P. Berrangé wrote:
> We have long had a problem with use of netcat for ssh tunnelling because
> there's no guarantee the UNIX socket path the client builds will match
> the UNIX socket path the remote host uses. We don't even allow session
> mode SSH tunnelling for this reason. We also can't easily auto-spawn
> libvirtd in session mode.
> 
> With the introduction of modular daemons we also have potential for two
> completely different UNIX socket paths even for system mode, and the
> client can't know which to use.
> 
> The solution to all these problems is to introduce a custom netcat impl.
> Instead passing the UNIX socket path, we pass the libvirt driver URI.
> The custom netcat then decides which socket path to use based on the
> remote build host environment.
> 
> We still have to support netcat for interoperability with legacy libvirt
> versions, but we can default to the new virt-nc.
> 
> Daniel P. Berrangé (9):
>    rpc: merge logic for generating remote SSH shell script
>    remote: split off enums into separate source file
>    remote: split out function for parsing URI scheme
>    remote: parse the remote transport string earlier
>    remote: split out function for constructing socket path
>    remote: extract logic for determining daemon to connect to
>    remote: introduce virtd-nc helper binary
>    rpc: switch order of args in virNetClientNewSSH
>    rpc: use new virt-nc binary for remote tunnelling
> 
>   build-aux/syntax-check.mk   |   2 +-
>   docs/uri.html.in            |  18 ++
>   po/POTFILES.in              |   2 +
>   src/libvirt_remote.syms     |   1 +
>   src/remote/Makefile.inc.am  |  32 +++
>   src/remote/remote_driver.c  | 323 +++++----------------------
>   src/remote/remote_nc.c      | 424 ++++++++++++++++++++++++++++++++++++
>   src/remote/remote_sockets.c | 277 +++++++++++++++++++++++
>   src/remote/remote_sockets.h |  70 ++++++
>   src/rpc/virnetclient.c      | 151 ++++++++-----
>   src/rpc/virnetclient.h      |  29 ++-
>   src/rpc/virnetsocket.c      |  37 +---
>   src/rpc/virnetsocket.h      |   4 +-
>   tests/virnetsockettest.c    |  12 +-
>   14 files changed, 1018 insertions(+), 364 deletions(-)
>   create mode 100644 src/remote/remote_nc.c
>   create mode 100644 src/remote/remote_sockets.c
>   create mode 100644 src/remote/remote_sockets.h
> 

If you fix small problems I've raised then:

Reviewed-by: Michal Privoznik <mprivozn at redhat.com>

Michal




More information about the libvir-list mailing list