ssh master - executa su remotamente

0

Eu tenho um servidor S ao qual preciso me conectar.

Estou conectando a S como usuário asdf com mestre de controle e depois disso eu faço algumas coisas:

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"

Funciona como esperado, mas a segunda linha me pede senha.

Estou tentando essa correção:

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

mas fica ainda pior:

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

Para mim, é obrigatório ssh como asdf primeiro. Eu também não posso fazer nenhuma outra conexão mestre de controle ssh. Eu também não posso modificar nenhuma configuração na máquina de destino.

Eu só preciso mudar para o root via ssh de alguma forma. Alguma idéia?

    
por Scony 24.08.2015 / 14:23

1 resposta

2

Tradicionalmente, os problemas de senha interativa são resolvidos usando o comando expect , que cria um intermediário pseudo-tty para falar com o processo. Aqui está uma versão alternativa do python usando o pacote python-pexpect equivalente. Crie um arquivo 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()

e execute-o com a senha e o comando para executar como parâmetros:

python run.py  'qwerty' 'ssh -t -o ControlPath=$SSHSOCKET ${K3_USER}@${IP} -p ${PORT} "su -c whoami && hostname"'
    
por 24.08.2015 / 16:58

Tags