我写了一个简短的脚本,它会通过一个名为 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个机。如果可能,我想尽量减少这种情况。
答案 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