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. Есть идеи ?

  • Невозможно отредактировать / proc / sys / net / core / wmem_max
  • Выключение или перезагрузка как обычно
  • Как ОС знает, что команде требуется sudo?
  • Включить ssh root login
  • Centos: сценарий Adduser / Passwd / Sudoer
  • sudo: ./server: команда не найдена
  • Как я могу «alias sudo !!»?
  • rsync как другой пользователь
  • 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 - лучшая ОС в мире.