![Автоматизация входа по SSH приводит к тому, что удаленная оболочка не отвечает, и происходит возврат к клиентскому терминалу (без ошибок)](https://rvso.com/image/1087138/%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F%20%D0%B2%D1%85%D0%BE%D0%B4%D0%B0%20%D0%BF%D0%BE%20SSH%20%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%20%D0%BA%20%D1%82%D0%BE%D0%BC%D1%83%2C%20%D1%87%D1%82%D0%BE%20%D1%83%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BE%D0%BB%D0%BE%D1%87%D0%BA%D0%B0%20%D0%BD%D0%B5%20%D0%BE%D1%82%D0%B2%D0%B5%D1%87%D0%B0%D0%B5%D1%82%2C%20%D0%B8%20%D0%BF%D1%80%D0%BE%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%B8%D1%82%20%D0%B2%D0%BE%D0%B7%D0%B2%D1%80%D0%B0%D1%82%20%D0%BA%20%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D1%81%D0%BA%D0%BE%D0%BC%D1%83%20%D1%82%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB%D1%83%20(%D0%B1%D0%B5%D0%B7%20%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA).png)
У меня возникла проблема с инструментом expect в Ubuntu 14.04 LTS. Я хочу автоматизировать входы по ssh в некоторые брандмауэры Sophos UTM и сразу же повысить свои права с помощью "sudo su -" и правильного пароля. Мне не нужно беспокоиться о паролях в виде простого текста, потому что мой скрипт запускается непосредственно из поля URL KeePass (двойной щелчок запускает скрипт и заполняет его правильными паролями через agrument/KeePass {Placeholder} за скриптом). Мне удалось сделать все это, за исключением удаленной оболочки root, которая не выполняет никаких команд и "сбрасывает соединение" обратно в мою систему Ubuntu. Поэтому команда, которую я пытаюсь запустить удаленно, не выполняется в течение 4-5 секунд, а затем внезапно выполняется в системе Ubuntu, не сообщая мне, что произошло.
Что мне нужно сделать, чтобы иметь полностью функционирующую удаленную оболочку? Ключи SSH и прямой вход в систему root для меня не являются решением, так как у нас слишком много UTM Sophos.
Объяснил происходящее:
sshtool.sh:
#!/usr/bin/expect -f
spawn sshpass -pPASSWORD ssh -t [email protected] "sudo su -"
expect -- "oot's password:"
send "PASSWORD\r"
expect -- "/root #"
expect eof
What happens in the terminal:
vct@vct-virtual-machine:~$ ./sshtool.sh
spawn sshpass -pPASSWORD ssh -t [email protected] sudo su -
root's password:
utm:/root # whoami
# *enter*
# not reacting for 4-5 seconds
vct@vct-virtual-machine:~$ whoami
vct
vct@vct-virtual-machine:~$
Изменение скрипта подобным образом не помогает решить проблему с обрывом соединения:
sshtool.sh:
#!/usr/bin/expect -f
spawn ssh [email protected]
expect -- "password:"
send "PASSWORD\r"
expect -- "/home/login > "
send -- "sudo su -\r"
expect -- "oot's password:"
send "PASSWORD\r"
expect -- "/root #"
send -- "whoami\r"
expect eof
vct@vct-virtual-machine:~$ ./sshtool.sh
spawn ssh [email protected]
[email protected]'s password:
Last login: Mon Apr 18 09:14:41 2016 from 192.168.1.44
Sophos UTM
(C) Copyright 2000-2015 Sophos Limited and others. All rights reserved.
Sophos is a registered trademark of Sophos Limited and Sophos Group.
All other product and company names mentioned are trademarks or registered
trademarks of their respective owners.
For more copyright information look at /doc/astaro-license.txt
or http://www.astaro.com/doc/astaro-license.txt
NOTE: If not explicitly approved by Sophos support, any modifications
done by root will void your support.
<M> loginuser@utm:/home/login > sudo su -
root's password:
# Following "whoami" directly executed by the script itself works fine
<M> utm:/root # whoami
root
# After 4-5 seconds, it's dropping the connection again
<M> utm:/root # vct@vct-virtual-machine:~$
Заранее спасибо!
решение1
У меня была похожая проблема. Проблема была в том, что мой удаленный файл .bashrc имел несколько строк, которые не делали ничего, если не запускались в интерактивном режиме.