看完之后这个问题我发现虽然我知道如何在 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 本身中转义内容(与需要完整路径的错误类似)。
不过我只测试了一次跳跃,所以可能缺少了一部分