如何以超级用户身份通过​​ SSH 在 Ubuntu 中运行脚本?

如何以超级用户身份通过​​ SSH 在 Ubuntu 中运行脚本?

所以我有一个需要以 root 身份远程执行的脚本。对于大多数 Linux 发行版来说这不是问题,因为它们有一个 root 帐户。但由于 Ubuntu 没有 root 帐户,因此以 root 身份执行任何操作都需要输入两次帐户密码的两步过程 - 一次用于登录,一次用于 sudo。启动脚本的 SSH 过程是自动的,因此它不能暂停以等待用户输入第二个密码请求。

有谁知道,除了破解 Ubuntu 以重新启用 root(这不是一个选项)之外,是否可以在目标计算机上以超级用户权限执行无人值守的 SSH 脚本?此外,没有使用过 Debian,Debian 是否也会这样做?

答案1

您可以使用仅基于密钥的身份验证 ssh 进入,然后编辑 sudoers 文件以不需要密码。这将消除您描述的两个步骤中的密码。

要查看基于 ssh 密钥的 ssh 访问:

ssh-keygen
ssh-copy-id dest-server

对于 sudoers 文件:

sudo visudo -f /etc/sudoers
#uncomment the following and then add yourself to the sudo group
# %sudo ALL=NOPASSWD: ALL

更好的办法是,只对自动化此特定功能所需的命令不需要 sudo 密码。请参阅我的答案这里为了那个原因。

参考:
设置无密码的用户

如何设置 ssh 来使用密钥而不是用户名/密码进行身份验证?

答案2

对于大多数 Linux 发行版来说,这不是问题,因为它们有 root 帐户。但由于 Ubuntu 没有

这句话是认真的吗?我还没见过一个没有root帐户的 *nix 系统。

sudo su

您是 root 用户。之后使用passwd设置 root 密码。然后 BAM!您能够以 root 身份登录(但前提是您在 ssh 中启用 RootLogin)!

更新:或者按照其他人的建议使用 ssh 密钥。

答案3

默认情况下,可以以 root 帐户身份连接。你只需为 root 帐户设置 ssh 密钥。将你的公钥添加到 /root/.ssh/authorized_keys

您还可以创建一个使用 NOPASSWD 设置 sudo 的服务帐户来登录。

serviceaccount ALL = NOPASSWD: ALL

在 Debian 中,默认情况下,root 帐户将在安装期间分配密码。但是,如果您使用专家模式安装程序,则可以选择一个选项来禁用 root 帐户并像 Ubuntu 一样设置 sudo。我强烈建议禁用 root 帐户,因为我们有很多管理员,我希望人们以自己的身份登录,然后使用 sudo 执行管理任务,这样就可以创建 root 活动日志。

相关内容