From 389238fe4a00cc4b96f1036bcd8b05a52dec0727 Mon Sep 17 00:00:00 2001 From: James Tucker Date: Thu, 8 Dec 2022 13:54:52 -0800 Subject: [PATCH] cmd/tailscale/cli: add workaround for improper named socket quoting in ssh command This avoids the issue in the common case where the socket path is the default path, avoiding the immediate need for a Windows shell quote implementation. Updates #6639 Signed-off-by: James Tucker --- cmd/tailscale/cli/ssh.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/cmd/tailscale/cli/ssh.go b/cmd/tailscale/cli/ssh.go index f1da52093..05a1f2645 100644 --- a/cmd/tailscale/cli/ssh.go +++ b/cmd/tailscale/cli/ssh.go @@ -21,6 +21,7 @@ import ( "tailscale.com/envknob" "tailscale.com/ipn/ipnstate" "tailscale.com/net/tsaddr" + "tailscale.com/paths" "tailscale.com/version" ) @@ -110,10 +111,15 @@ func runSSH(ctx context.Context, args []string) error { // So don't use it for now. MagicDNS is usually working on macOS anyway // and they're not in userspace mode, so 'nc' isn't very useful. if runtime.GOOS != "darwin" { + socketArg := "" + if rootArgs.socket != "" && rootArgs.socket != paths.DefaultTailscaledSocket() { + socketArg = fmt.Sprintf("--socket=%q", rootArgs.socket) + } + argv = append(argv, - "-o", fmt.Sprintf("ProxyCommand %q --socket=%q nc %%h %%p", + "-o", fmt.Sprintf("ProxyCommand %q %s nc %%h %%p", tailscaleBin, - rootArgs.socket, + socketArg, )) }