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 

Signed-off-by: James Tucker <james@tailscale.com>
This commit is contained in:
James Tucker 2022-12-08 13:54:52 -08:00 committed by James Tucker
parent bdc45b9066
commit 389238fe4a

@ -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,
))
}