Wenn Sie den Tunnel wirklich erst einrichten und vncviewer
später ausführen müssen und erst dann zur Remote-Konsole gelangen, ist dies das grundlegende Skript:
#!/bin/sh tmpd="$(mktemp -d)" || exit 1 # temporary directory creation srvr=10.0.0.1 # remote server sckt="$tmpd"/"$$-$".socket # control socket for SSH connection sharing clean() { rm -rf "$tmpd"; } # cleaning function, removes the temporary directory # establishing SSH master connection ssh -o ControlMaster=yes \ -o ControlPath="$sckt" \ -o ExitOnForwardFailure=yes \ -Nf -L 555:localhost:555 "$srvr" || { clean; exit 2; } # the tunnel is now established vncviewer >/dev/null 2>&1 & # silent custom command in the background ssh -o ControlPath="$sckt" "$srvr" # reusing the master connection # (exit the remote shell to continue) wait $! # waiting for vncviewer to terminate ssh -o ControlPath="$sckt" \ -O exit "$srvr" # terminating the master connection clean || exit 4 # removing the temporary directory
Getestet auf einem Kubuntu-Client, der eine Verbindung zum Debian-Server herstellt. Ich bin nicht sicher, wie robust es ist. Behandle es als Konzeptnachweis. Siehe man 1 ssh
und man 5 ssh_config
für Details.