]> gitweb.fluxo.info Git - kvmx.git/commitdiff
Feat: Persistent SSH connections 0.5.0
authorSilvio Rhatto <rhatto@riseup.net>
Fri, 14 Nov 2025 21:16:54 +0000 (18:16 -0300)
committerSilvio Rhatto <rhatto@riseup.net>
Fri, 14 Nov 2025 21:16:54 +0000 (18:16 -0300)
ChangeLog.md
kvmx
kvmxfile

index a95f824a1a497ee87b1612f9100713a3687d7194..5f758065ea91981f283a9bf4d2f79e9552b3d899 100644 (file)
@@ -1,5 +1,14 @@
 # ChangeLog
 
+## 0.5.0 - 2025-11-14
+
+* Persistent SSH sessions, to speed up connections, especially clipboard
+  copy and paste between the host and the guests:
+  * Enabled by default.
+
+  * Configurable with `ssh_persist`, `ssh_control_master`, `ssh_control_path`
+    and `ssh_control_persist` variables.
+
 ## 0.4.1 - 2024-12-17
 
 * Fixes the case when the virtual machine guest is registered under a
diff --git a/kvmx b/kvmx
index 01c9a0bc62ed73fef05de44ef7f9660924410b0d..2c04c2224e2232827b6902ef3b7d9cab55544748 100755 (executable)
--- a/kvmx
+++ b/kvmx
@@ -67,6 +67,25 @@ function __kvmx_ssh_command {
 
   # See http://blog.djm.net.au/2013/11/chacha20-and-poly1305-in-openssh.html
   SSH_OPTS="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=FATAL -o ProxyCommand=none -o Ciphers=chacha20-poly1305@openssh.com $ssh_key_param"
+
+  # Persist SSH sessions, to speed up connections, especially clipboard copy
+  # and paste between the host and the guests
+  if [ "$ssh_persist" != "n" ]; then
+    if [ -z "$ssh_control_master" ]; then
+      ssh_control_master="auto"
+    fi
+
+    if [ -z "$ssh_control_persist" ]; then
+      ssh_control_persist="0"
+    fi
+
+    if [ -z "$ssh_control_path" ]; then
+      ssh_control_path="$HOME/.ssh/kvmx-${VM}-%r@%h:%p"
+    fi
+
+    SSH_OPTS="$SSH_OPTS -o ControlMaster=$ssh_control_master -o ControlPath=$ssh_control_path -o ControlPersist=$ssh_control_persist"
+  fi
+
   SSH_COMMAND="ssh $SSH_OPTS -o User=$SSH_LOGIN"
   SCP_COMMAND="scp $SSH_OPTS -o User=$SSH_LOGIN"
 }
index dab6f2de0994e43c6e666c02493729741687a1c9..2a10e1eed60a7c74fe94d734086b1b497b88adea 100644 (file)
--- a/kvmxfile
+++ b/kvmxfile
@@ -238,6 +238,19 @@ ssh_custom="y"
 #ssh_custom_pubkey="/home/myhostuser/.ssh/id_rsa.pub"
 #ssh_custom_pubkey="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDVFmJ2UDn2dK3nHHAkHzt8F4AfrXTFiGa+guem92S/pztMGAUDjEZBYEW3mZ8ATyo4GoPZ92tkjmra0Fgv6ETIox+SPWbzzjhzbv2CQUTWvF6PEVwJbT1PTzaIVRiDYf+yX7e3Y8HcmkAi60Cxs5Xr3HLkqdi2jYKFofCm58R+HGnRv1WSurPnf7C7KQBSW7E1S2CafW9VFHhGCzezyThjN+n3bJjgYFzPxdTlWyfW1T7Yv61/fqfuara0kpZx1l5pblpgbCTT7WKRIhwj1x0QTo/qDQ6k52tffiCVyMGJKvires9yp5qT5Y+ldssBKDa8muRF/dh7/UCyxvcm3HTDjWG24Sr4r9JWbhkqF89UePlOw5j73qw4gzT7YQ38tzz2XI5weAL1OXM6qhCbOwfPXwYbB5xM4g62WZugtcCLan6Iy8hvoiRIJ1MU2ar73wunghQQ84oNIrEVezJsuZxwxVbe45ulnM7x4Hqeu6jmOutWFkdkAHsqd1E3zTOS1RURwi0TpnD+iWwD7FOA9c8B6AWP4i9XVW6BLi1waARrS3bVnOh3djc20fVsClfEDDXFg2KiTeQaAWfjLguyUmxysSiUC2pnibd1bEDtdfPlkA2jaE2nAn6Tw7Vp5zd8P1d1trLMx3YkRq5uQSPqnfQDKoYH5FPMlNTbMINLC56ijw== user@kvmx"
 
+# Enable SSH connection persistence by using ControlMaster, ControlPath and
+# ControlPersist options, as documented at ssh_config(5)
+ssh_persist="y"
+
+# Sets SSH's ControlMaster as documented at ssh_config(5)
+ssh_control_master="auto"
+
+# Sets SSH's ControlPath as documented at ssh_config(5)
+ssh_control_path="$HOME/.ssh/kvmx-${VM}-%r@%h:%p"
+
+# Sets SSH's ControlPersist value as documented at ssh_config(5)
+ssh_persist_seconds="0"
+
 # Bootloader (used only during bootstrapping by kvmx-create).
 bootloader="grub"