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

如何解决通过SSH执行需root权限操作时的sudo密码输入超时问题?

解决远程sudo密码输入失败的问题

你的脚本问题根源不是密码输入延迟不够,而是输入流被占用:sudo -S需要从标准输入读取密码,但你把remote-actions.sh通过重定向传给了bash -s的标准输入,导致sudo无法接收你手动输入的密码,才会快速触发多次尝试失败。下面是几种可行的解决办法:

方法1:配置sudo免密执行指定命令(推荐)

直接在远程服务器上给你的账号配置无需密码执行useradd,这是最安全可靠的自动化方式:

  1. 登录远程服务器,执行sudo visudo(必须用visudo编辑,避免语法错误锁死sudo)
  2. 在文件末尾添加一行:
    ${my_user_name} ALL=(ALL) NOPASSWD: /usr/sbin/useradd
    
  3. 保存退出后,你的本地脚本就可以正常运行,无需输入sudo密码。

方法2:通过管道传递密码(不推荐,有安全风险)

如果临时需要快速测试,可以把密码通过管道传给sudo -S,但注意密码会暴露在命令历史或进程列表中:
修改本地脚本为:

# local script
echo "你的sudo密码" | ssh -p 22 ${my_user_name}@${server_host} 'sudo -S bash -s' < remote-actions.sh ${new_user_name}

方法3:调整sudo密码缓存超时(仅缓解,不解决脚本自动执行问题)

如果只是想延长sudo密码的缓存时间(比如让你在一段时间内执行脚本无需重复输入),可以编辑sudoers:

  1. 执行sudo visudo
  2. 添加或修改一行:
    Defaults timestamp_timeout=15  # 设置为15分钟,默认是5分钟
    
    这样你在输入一次sudo密码后的15分钟内,执行sudo命令无需再次输入,但脚本首次运行时还是需要手动输入密码,无法彻底解决自动化问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 20:39:55