You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用sshpass跨服务器执行root专属命令时参数传递异常如何解决

SSH命令参数传递问题修复方案

问题根因

原命令参数传递异常是因为su命令调用不符合规范:su执行指定命令需要搭配-c参数,未加该参数时,后续的command_must_be_run_root及参数会被识别为要切换的用户名,无法传递到目标执行命令中。

修复后的完整命令

sshpass -p 'my_password' ssh -t test-admin@my_ip "sudo su -c 'command_must_be_run_root --arguments'"

改动说明

  • 新增su的-c参数,声明后续字符串为要执行的命令内容
  • 命令嵌套采用外层双引号+内层单引号的格式,避免不同层级shell解析引号时出现冲突,保证参数完整传递

可选优化方案

如果test-admin用户的sudo配置允许直接以root身份执行命令,可省略su步骤,直接调用sudo执行目标命令,写法更简洁:

sshpass -p 'my_password' ssh -t test-admin@my_ip "sudo command_must_be_run_root --arguments"

内容的提问来源于stack exchange,提问作者Mike K.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 09:06:01