ssh master – выполнить su удаленно

У меня есть сервер S которым мне нужно подключиться.

Я подключаюсь к S как пользователь asdf с управляющим мастером, и после этого я выполняю некоторые вещи:

 ssh -N -f -M -o ControlPath=$SSHSOCKET ${USER}@${IP} -p ${PORT} -i id_rsa ssh -to ControlPath=$SSHSOCKET ${USER}@${IP} -p ${PORT} "su -c whoami && hostname && exit" 

Он работает так, как ожидалось, но вторая строка запрашивает у меня пароль.

Я пытаюсь такое исправить:

 echo 'qwerty' | ssh -t -to ControlPath=$SSHSOCKET ${K3_USER}@${IP} -p ${PORT} "su -c whoami && hostname && exit" 

но это становится еще хуже:

 muxserver_accept_control: tcgetattr: Inappropriate ioctl for device tcgetattr: Inappropriate ioctl for device Password: 

Для меня обязательным является ssh as asdf . Я также не могу выполнить никаких других управляющих соединений ssh. Я также не могу изменить любую конфигурацию на целевой машине.

Мне просто нужно как-то переключиться на root через ssh. Есть идеи ?

  • Конкретная последовательность команд с правами доступа sudo и файлов
  • Запуск локальных скриптов на нескольких серверах с использованием пользователя sudo через скрипт
  • Как я могу предотвратить использование sudoer главного ключа LUKS?
  • Сломанный sudo на веб-сервисах amazon ec2 linux centOS
  • Sudo mkdir не удается из-за разрешения отклонить ошибку
  • Как я могу заставить sudo забыть пароль автоматически после одной команды?
  • Проблема с запуском cd с sudo в качестве другого пользователя
  • Apt-get, файл sudoers
  • One Solution collect form web for “ssh master – выполнить su удаленно”

    Традиционно проблемы с интерактивным паролем решаются с помощью команды expect которая создает промежуточную псевдо-tty для обсуждения процесса. Вот альтернативная версия python с использованием эквивалентного пакета python-pexpect. Создайте файл python run.py:

     import sys,pexpect (pw,cmd) = sys.argv[1:] child = pexpect.spawn(cmd) child.expect(r'(?i)Password:') child.sendline(pw) print child.read() 

    и запустите его с паролем и командой для запуска в качестве параметров:

     python run.py 'qwerty' 'ssh -t -o ControlPath=$SSHSOCKET ${K3_USER}@${IP} -p ${PORT} "su -c whoami && hostname"' 
    Linux и Unix - лучшая ОС в мире.