Автоматическая регистрация по SSH приводит к тому, что удаленная оболочка не отвечает, возвращаясь к клиентскому терминалу (без ошибок).

394
Nyctophilia

У меня есть проблема с ожидаемым инструментом под Ubuntu 14.04 LTS. Я хочу автоматизировать ssh-входы в некоторые межсетевые экраны Sophos UTM и сразу же сообщить свои права с помощью sudo su - и правильного пароля. Мне не нужно беспокоиться о простых текстовых паролях, потому что мой скрипт запускается прямо из поля URL-адреса KeePass (двойной щелчок запускает скрипт и заполняет его правильными паролями через agrument / KeePass позади скрипта). Мне удалось все это сделать, за исключением наличия оболочки удаленного корня, которая не выполняет никаких команд и «сбрасывает соединение» обратно в мою систему Ubuntu. Таким образом, команда, которую я пытаюсь запустить удаленно, не выполняется в течение 4-5 секунд, а затем неожиданно исполняется в системе Ubuntu, не сообщая мне, что произошло.

Что мне нужно сделать, чтобы иметь полностью функционирующую удаленную оболочку? SSH-ключи и прямой вход в систему root не являются решением для меня, так как у нас слишком много UTM Sophos.

Объясняется происходящее:

sshtool.sh: #!/usr/bin/expect -f spawn sshpass -pPASSWORD ssh -t loginuser@192.168.1.254 "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 loginuser@192.168.1.254 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 loginuser@192.168.1.254 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 loginuser@192.168.1.254 loginuser@192.168.1.254'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
Дубликат http://askubuntu.com/q/758595/10127 glenn jackman 8 лет назад 0

1 ответ на вопрос

1
Jakuje

If you want a "responsive" remote shell, you need an interact command after completing the login exchange. Something like this:

#!/usr/bin/expect -f spawn sshpass -pPASSWORD ssh -t loginuser@192.168.1.254 "sudo su -" expect -- "oot's password:" send "PASSWORD\r" expect -- "/root #" interact 

Похожие вопросы