Intereting Posts
Установите сетевой диск Windows Fail2ban не блокирует IP-адреса, пытающиеся получить доступ к моему серверу через ssh Bash-Script возвращает неверный PID Расширение текстового формата в VI Инициализация переменных Bash – требуется, рекомендуется или определяется по мере продвижения Белый список и черный список для SSH Есть ли что-то вроде командной консоли Linux под ключ? Найти уникальные значения из поиска Разрешение папки DD-WRT и / bin Может ли 25 лет развития ядра Linux быть квалифицированным или абстрагированным в условиях неспециалиста? Как создать виртуальный аудиовыход и направить его в дистрибутив на основе Ubuntu Добавление одного файла во второй до конца файла Использовать ли только программный рендеринг программного обеспечения intel gpu (Mesa)? vfat не распознается в debian Является ли это подходящей установкой для отслеживания владения файлами с использованием доли Samba и управления правами?

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

Традиционно проблемы с интерактивным паролем решаются с помощью команды 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"'