Eu poderia fazer isso funcionar na minha caixa, mas não tenho certeza se sudoers
option requiretty
o quebraria.
Na máquina B, crie um programa que sudo
usará para solicitar senhas.
por exemplo. /home/myname/askpass.sh
, chmod
it +x
#!/bin/bash
echo "my_password"
Na máquina Um script de criação de conexão que estabelecerá a conexão ssh para os comandos relacionados scp
e injetar sudo
+ no comando remoto.
por exemplo. chame de ./fakessh.sh
, chmod
it +x
#!/bin/bash
oldargs=( $@ )
newargs=( )
while : ; do
[ "${oldargs[0]}" == "scp" ] && break
newargs+=( "${oldargs[0]}" )
oldargs=( "${oldargs[@]:1}" )
done
newargs+=( 'export SUDO_ASKPASS=/home/myname/askpass.sh' \; exec sudo -A -- "${oldargs[@]}" )
exec ssh "${newargs[@]}"
Observe que o script acima faz referência a /home/myname/askpass.sh
, atualiza o caminho conforme necessário.
Agora execute scp
quase normalmente:
scp -S ./fakessh.sh user@hostname:/etc/shadow ./
Isso funciona para mim. YMMV.
Posso pensar em outros hacks se você puder executar algo como ncat
ou socat
com sudo
e apontar scp
na porta de atendimento personalizada, mas isso está ficando bobo do ponto de segurança.