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.