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

如何通过Bash脚本经SSH以su -身份执行远程服务器上的指定脚本(无sudo环境)

解决远程执行su -后运行脚本的问题

我懂你遇到的问题了——你原来的命令里,su -会启动一个交互式的root shell,只有当你手动退出这个shell之后,后面的&& /home/$USERNAME/firstboot/firstboot.sh才会尝试执行,但这时候SSH连接已经断开了,脚本根本没机会运行。

要解决这个问题,你需要让su -直接执行指定的脚本,而不是进入交互式shell。可以用su的-c参数来实现,这个参数允许你指定切换到root身份后要执行的命令,同时还能保留su -加载root环境的特性(这也是你要求的核心,不能省略-)。

可行命令示例

直接修改你的SSH命令如下:

ssh -t $USERNAME@$IP "su - -c '/home/$USERNAME/firstboot/firstboot.sh'"

命令细节解释

  • su -:保持你需要的root环境加载(这是脚本正常运行的前提,必须保留-)
  • -c '/path/to/script.sh':告诉su切换到root后,立即执行引号内的脚本命令
  • -t:SSH的这个参数会分配伪终端,确保su的密码提示能正常显示(如果需要输入root密码的话)

额外注意事项

  1. 权限与路径确认:确保远程服务器上的/home/$USERNAME/firstboot/firstboot.sh确实存在,并且对root用户有执行权限(可以提前用chmod +x /home/$USERNAME/firstboot/firstboot.sh设置)
  2. 密码交互:执行命令时,远程服务器会提示你输入root密码,输入完成后脚本就会自动运行
  3. 交互式脚本适配:因为已经用了-t参数分配伪终端,脚本如果有交互步骤,应该能正常响应

内容的提问来源于stack exchange,提问作者Jeremyy44

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 21:42:28