bash - Bash脚本中的Sudo SU而不询问用户密码
问题描述
我的用户在根组中。我不能以 root 身份 ssh 到服务器,因为Permission denied, please try again.
我通常做的是我作为我的用户 ssh,一旦我登录,我输入sudo su
并提供我的用户密码成为 root。
我想自动化我的部分工作,所以我想编写一个 bash 脚本,它将作为我的用户 ssh,切换到 root,然后调用命令集。
到目前为止,我附带了以下脚本,但我无法在不询问用户密码的情况下切换到 root 用户:
while read p; do
p=$(echo $p|tr -d '\r')
sshpass -p "myPasswd" ssh -T -o StrictHostKeyChecking=no myUser@remoteServer << EOT
cd /var/log/jboss/ #here I am getting 'permission denied' message as only root has access
exit
EOT
done < $nodes
我也试过:
sshpass -p "myPasswd" ssh -tt -o StrictHostKeyChecking=no myUser@remoteServer 'cd /var/log/jboss/'
但我得到了同样的permission denied
错误信息
解决方案
出于安全原因,通常不允许 root 用户进行 ssh 访问。
PermitRootLogin no # value in /etc/ssh/sshd_config
上述设置首先阻止您以 root 身份登录。如果您对网络的安全性“满意”,您可以考虑修改该设置。如果您对 sshd 配置进行过修改,则需要重新启动 ssh 服务:
sudo service sshd restart
当然,如果您想遵循常识,您可能需要更改您的 sudoers 文件(如 chepner 和 Nic3500 建议的那样)。这是一个合理的配置更改:
将以下行添加到 /etc/sudoers 文件的底部:
#includedir /etc/sudoers.d
并将以下文件添加到您的 /etc/sudoers.d 目录:
cat /etc/sudoers.d/10_wheel:
%wheel ALL=(ALL) NOPASSWD: ALL
上面的示例将 sudo 配置为允许访问 wheel 组成员的所有命令,无需密码。您可能希望将组名更改为您的用户所属的组。
您可以通过发出以下命令来确定您的组:
groups
此外,为避免使用 sshpass,您可以将 ssh 公钥部署到远程主机。最后,如果您根本不想更改服务器,您可以使用期望实现您想要做的事情。如果您对 python 编码感到满意,我推荐 pexpect - 我发现它比通常讨论的基于 TCL 的期望要容易得多。
推荐阅读
- html - 烧瓶:url_for 在一个实例中工作但在另一个实例中不工作
- python - 未能遍历列表以查询 DynamoDB
- javascript - 我的第一个 chrome 扩展程序获得权限错误以发布扩展程序。我在这里做错了什么?
- c - C char 输入无法按预期使用 switch 和 for 循环
- javascript - 如果通过按钮单击激活弹出屏幕,则不会显示它
- sql - 根据主机名限制 MS SQL 数据库上的 SQL 登录
- eclipse - 使用现有源代码重新安装 Eclipse
- css - 顺风侧边栏组件到 React
- ruby-on-rails - 另一个 Ruby on Rails Rake 资产:预编译错误
- c++ - C++ 值未从线程更新