我正在尝试使用我的普通用户登录 Linux 机器,然后使用 bash 脚本成为 root。我的用户在 sudoers 文件中,因此它可以成为 root。
正常的过程如下:
$ssh regularuser@machine
regularuser@machine's password:
[regularuser@machine ~]$
[regularuser@machine ~]$ sudo su -
[sudo] password for regularuser:
[root@machine ~]$
我到处搜索以做到这一点,但我能找到的一切都不能完全满足我的需要。我也尝试使用 #!/usr/bin/expect 但它不起作用。
===========================================================================
我的工作 bash (access.sh) 如下 但它在发出“sudo su -”命令后要求我输入密码 :
#!/bin/bash
machine=$1
ssh -t regularuser@$machine "sudo su -"
$ sh access.sh machine
regularuser@machine's password:
[sudo] password for regularuser:
[root@machine ~]# exit
logout
Connection to machine closed.
===========================================================================
尝试 #1 - 当我尝试以下操作时,我得到“/usr/bin/expect: No such file or directory ”
#!/bin/bash
machine=$1
echo "Password?"
read -s password
expect -c '
spawn ssh regularuser@'"$machine"'
expect "Password: "
send '"$password\r"'
'
尝试 #2 - 结果相同
#!/bin/bash
machine=$1
echo "Password?"
read -s password
/usr/bin/expect << EOF
spawn ssh regularuser@$machine
expect "Password: "
send "${password}\r"
EOF
尝试#3 - 也不起作用。它给了我“ 意外的 EOF,同时寻找匹配的 `'' ”
#!/bin/bash
machine=$1
echo "Password?"
read -s password
ssh -t regularuser@$machine "echo $password | sudo -S su -"
$ sh access.sh machine
Password?
regularuser@machine's password:
bash: -c: line 0: unexpected EOF while looking for matching `''
bash: -c: line 1: syntax error: unexpected end of file
Connection to vm-all-all-ad-test-packages closed.
我也不能做 "sshpass -p "$password"ssh root@$machine"因为我的普通用户的密码与 root 的不同
我尝试了几乎所有的东西,但没有成功。
有任何想法吗?!!
最佳答案
有趣的是你带来了sshpass
向上。 sshpass
旨在绕过ssh
要求以交互方式给出密码。您面临的问题和原因expect
不行,那是sudo
出于完全相同的原因,使用完全相同的技巧。
潜在的解决方案,按照我推荐的数量递减顺序:
sudo
进行身份验证. sshpass
在 sudo
上做惯常的把戏迅速的。我没有尝试过,但它可能就像做 sshpass -p password sudo something
一样简单.如果没有,我好像记得最新版本的sshpass
有办法更改其预期的密码提示(类似于 expect
正在做的事情)。 sshpass
中的最新提交svn 似乎是它,但我相当肯定我并没有真正发布具有此功能的版本。 警告 : 做#3,风险自负。 #3 的含义是您正在以可恢复的形式将用户的密码存储在某个文件系统中。尽你所能避免这个选项。
更新 : 1.06 版的 sshpass 现在在 sourceforge 下载站点上。已确认与
sudo
合作, 它包含密码提示说明符以提供帮助。仍然不推荐此解决方案。
关于bash - Linux - Bash 登录到机器然后成为 root,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38111753/