如何在 ssh 的机器上执行 sudo 命令?

时间:2021-04-12 20:02:21

标签: bash ssh

我写了一个简短的脚本,它会通过一个名为 config 的文件 ssh 到一堆机器,该文件将遍历这些机器,通过它们 ssh 并在它们上创建一个新用户。问题是 - 这些命令都需要sudo的特权,当我试图执行sudo在他们身上,我得到一个错误的密码错误,可能是因为须藤是不允许通过SSH?我不太确定。

代码如下:

#!/bin/bash

read -p "enter remote admin username " adminuser
read -p "choose new username " newuser
read -p "choose new pass " newpass

while read -u10 HOST ; do ssh ${HOST} "uname -a" ;
sudo -S adduser --disabled-password --gecos "" $newuser
sudo -S chpasswd <<<"$newuser:$newpass"
sudo -S chown $newuser /home/$newuser
#sudo -S  groupadd group
echo; echo "New user ${newuser} has been created on ${HOST}"

done 10< config.txt

值得注意的是,我已将 /etc/ssh/sshd_config PermitRootLogin 设置为 yes。

在此期间,有没有办法最大限度地减少我必须输入管理员密码的次数?现在,我不得不使用它,当我第一次ssh进入机器,当我执行sudo命令 - 所以,如果我有17吨的机器,这是一个最小的17个机。如果可能,我想尽量减少这种情况。

1 个答案:

答案 0 :(得分:0)

请不要将 /etc/ssh/sshd_config PermitRootLogin 设置为 yes。除非必要,否则没有理由玩火。

在远程机器上,use visudo 定义一个组,如 admin,无需输入密码即可使用 sudo。这是我的 /etc/sudoers 文件中的两行:

# Members of the admin group may gain root privileges
%admin ALL=(ALL) NOPASSWD: ALL

然后将用户 ID 添加到该 Linux 用户组,脚本将以 root 身份运行,而不会提示输入 sudo 密码:

$ usermod -a -G admin my_user_name