Windows CLI 难以逃脱

Windows CLI 难以逃脱

看完之后这个问题我发现虽然我知道如何在 linux/bash 中转义,但在 windows cmd/batch 中却表现不佳。有人知道如何正确转义以下命令的 windows 版本吗?请原谅它的完整路径因为一个错误

Linux(有效!)

ssh -o ProxyCommand="ssh -W %h:%p -o ProxyCommand=\"ssh -W %h:%p user@jmp1\" user@jmp2" user@dest

Windows(尝试了多个 % 字符,但无济于事!)

ssh -o ProxyCommand="C:\Windows\System32\OpenSSH\ssh.exe -W %h:%p -o ProxyCommand=\"C:\Windows\System32\OpenSSH\ssh.exe -W %h:%p user@jmp1\" user@jmp2" user@dest
Bad stdio forwarding specification '%h:%p'

是的,我知道 ssh‘-J’参数,并且我已经可以通过使用 ssh 配置来实现相同的结果,但此时我确实想了解 Windows 命令转义。

更新 1
删除不必要的双重百分比

答案1

尝试在里面使用双引号来转义它们。我确实也需要使用双百分号,否则 ssh 会扩展错误的对。(不包括这些换行符):

C:\Windows\System32\OpenSSH\ssh.exe -o 
  ProxyCommand="C:\Windows\System32\OpenSSH\ssh.exe -W %h:%p -o 
    ProxyCommand=""C:\Windows\System32\OpenSSH\ssh.exe -W %%h:%%p"" user@jmp1"" 
  user@jmp2" 
user@dest

我认为这更多地与 ssh.exe 如何解析ProxyCommands参数有关,而不是如何在 CMD 本身中转义内容(与需要完整路径的错误类似)。

不过我只测试了一次跳跃,所以可能缺少了一部分

相关内容