2016-06-29 2 views
2

Я пытаюсь войти в Linux с моим обычным пользователем, а затем стать root, используя скрипт bash. Мой пользователь находится в файле sudoers, поэтому он может стать root.Linux - Bash, чтобы войти в систему, а затем стать root

Нормальный процесс будет следующим:

$ssh [email protected] 
[email protected]'s password: 
[[email protected] ~]$ 
[[email protected] ~]$ sudo su - 
[sudo] password for regularuser: 
[[email protected] ~]$ 

Я искал во всем, чтобы сделать это, но все, что я мог бы найти не делать то, что мне нужно. Я также пытался использовать #!/Usr/bin/expect, но он не работает.

=========================================================================== 

Мой рабочий Баш (access.sh) выглядит следующим образом но просит у меня пароль после выдачи "Суда су -" команду:

#!/bin/bash 
machine=$1 
ssh -t [email protected]$machine "sudo su -" 

$ sh access.sh machine 
[email protected]'s password: 
[sudo] password for regularuser: 
[[email protected] ~]# exit 
logout 
Connection to machine closed. 

=========================================================================== 

Попытка # 1 - Когда я попробовал следующее я получил «/USR/бен/не ожидать: нет такого файла или каталога»

#!/bin/bash 
machine=$1 
echo "Password?" 
read -s password 

expect -c ' 
    spawn ssh [email protected]'"$machine"' 
    expect "Password: " 
    send '"$password\r"' 
' 

Попытка # 2 - тот же результат

#!/bin/bash 
machine=$1 
echo "Password?" 
read -s password 

/usr/bin/expect << EOF 
spawn ssh [email protected]$machine 
expect "Password: " 
send "${password}\r" 
EOF 

Попытка №3 - Не работает. Это дает мне «неожиданного EOF при поиске соответствия` „“»

#!/bin/bash 
machine=$1 
echo "Password?" 
read -s password 

ssh -t [email protected]$machine "echo $password | sudo -S su -" 


$ sh access.sh machine 
Password? 
[email protected]'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 -п „$ пароля“ SSH корень @ $ машины»либо потому, что пароль моего обычного пользователя отличается от root's

Я пробовал практически все, но без успеха.

Любые идеи? !!

+2

Почему вы используете пароли, а не ssh-ключи? По умолчанию sshd разрешает root-логины, поэтому вы можете настроить ssh-ключ на этом компьютере и добавить его в свой 'ssh.config' или использовать переключатель' -i'. Если, как и я, вы не допустили никаких корневых входов через SSH. – paddy

+0

Я боюсь, что это требование и вход в root не разрешены. Нет ключей ssh. – JustQn4

ответ

1

Интересно, что вы приносите sshpass вверх. sshpass предназначен для обхода ssh, чтобы пароль вводился в интерактивном режиме. Проблема, с которой вы столкнулись, и причина, по которой expect не работает, заключается в том, что sudo делает точно такой же трюк, по той же причине.

Потенциальных решения, в порядке убывания, сколько я рекомендую их:

  1. Получить администратор, чтобы позволить вам аутентификацию ключа на основе непосредственно к корню.
  2. Измените файл sudoers, чтобы пользователь мог выполнить эту команду без аутентификации с помощью sudo.
  3. Убедите sshpass выполнить свой обычный трюк на подсказке sudo. Я не пробовал, но это может быть так же просто, как делать sshpass -p password sudo something. Если нет, я, кажется, помню, что в последних версиях sshpass есть способ изменить ожидаемое приглашение пароля (похоже на то, что делает expect). Последняя фиксация в svn sshpass, похоже, есть, но я уверен, что я не стал фактически выпускать версию с этой возможностью.

ПРЕДУПРЕЖДЕНИЕ: Возьмите № 3 под ваш риск.Последствия №3 в том, что вы сохраняете в восстановимой форме пароль для своего пользователя в некоторой файловой системе. Сделайте все возможное, чтобы избежать этого варианта.

Обновление: Версия 1.06 sshpass теперь находится на сайте загрузки sourceforge. Он подтвержден для работы с sudo и содержит спецификатор подсказки пароля, который поможет. Все еще не рекомендую это решение.

+0

Спасибо Shachar за ваши комментарии. Боюсь, я не могу. – JustQn4

Смежные вопросы