在 Windows 中以 sudo 身份运行 bash 脚本,无需交互

在 Windows 中以 sudo 身份运行 bash 脚本,无需交互

我需要从在 Windows 机器上运行的 TeamCity 在远程 Linux 机器上以 sudo 身份执行 bash 脚本。我可以使用 plink 从 cmd 行顺利执行脚本,但系统提示我输入密码。我需要能够在不提示输入密码的情况下执行此操作,以便从 teamcity 执行。

我有什么选择?

答案1

您需要sudo在要运行脚本的主机上编辑配置。visudo以 root 身份运行并添加如下行:

USERNAME ALL=(ALL) NOPASSWD: ALL

替换USERNAME为要运行脚本的用户。这应该允许用户在sudo不输入密码的情况下使用。您可能希望将使用限制sudo在您实际需要的命令上。查看 sudoers 中的visudo示例,了解如何实现这一点。

答案2

如果两个系统都是安全的,您可以使用如下方法:

echo 'sudo_password' | sudo -S command

此选项必须小心使用,因为它使用明文密码,登录该机器的其他用户可能会看到它。

答案3

一个选项是直接允许 ssh 访问机器的 root 帐户。您应该使用私钥锁定它,并且可能用密码保护该密钥。将以下内容添加到您的 sshd_config 中:

PermitRootLogin yes
Match User root
  PasswordAuthentication no

如果采用这种方式,则可以通过command=""在 ~root/authorized_hosts 文件中添加以下内容来让此密钥运行特定的命令脚本,而不管指定了什么,例如

command="/root/myscript" ssh-rsa AAAB3NzaC1yc2EAAAABIwAAADV4//KSz...

相关内容