如何在cmd.exe中通过PowerShell执行SSH sudo命令
问题:PowerShell命令在cmd.exe中执行触发权限拒绝
仅在PowerShell中可用的命令
该命令可正常执行,通过管道传递sudo密码,远程在目标机器的/etc目录下追加内容:
echo kali | ssh -t kali:kali@192.168.158.129 'sudo -S bash -c ""echo 123 >> /etc/123"" '
在cmd.exe中执行的失败命令及报错
在cmd中通过powershell -command调用上述命令时会失败:
powershell -command "echo kali | ssh -t kali:kali@192.168.158.129 'sudo -S bash -c ""echo 123 >> /etc/123"" '"
报错信息:
权限拒绝: /etc/123
解决方法
问题源于cmd环境下的引号转义规则与PowerShell不同,需将命令中的内部双引号改用\"转义,修正后的cmd命令如下:
powershell -command "echo kali | ssh -t kali:kali@192.168.158.129 'sudo -S bash -c \"echo 123 >> /etc/123\"' "
原命令中的""在cmd传递给PowerShell时无法被正确解析,导致远程执行的bash -c命令参数异常,使得sudo权限未正确应用,最终触发权限拒绝。
内容的提问来源于stack exchange,提问作者wgf4242
相关产品推荐
相关产品推荐

