Estou configurando um nó de nuvem (somente ssh acessível, GUIs obsoletas, executando o Debian 7) com 'PermitRootLogin no' para segurança. Para alguns aplicativos, desejo copiar alguns arquivos de configuração de propriedade da raiz do remoto para o local (por exemplo, para configurar um cliente local). E, por questões de reprodutibilidade, eu quero roteirizar isso (tendo já feito as operações algumas vezes a partir de linhas de comando malformadas). Qual é a melhor prática para habilitar a obtenção remota do sudo
de um script (e, sim, eu sei que vou digitar a senha - completa não-interatividade seria bom mas não é um requisito), dado 'PermitRootLogin no' (e sem acesso físico)? Algumas coisas que eu tentei:
(1) scp
: falha porque não sei dizer scp
Quero ser sudo
remotamente. (AFAICS - estou faltando alguma coisa?)
(2) nua rsync-path
: eu tentei
me@local ~ $ rsync --rsync-path='sudo rsync' remote:/path/to/file ${HOME}/backups/cloud_9/path/to/file
X11 forwarding request failed on channel 0
sudo: no tty present and no askpass program specified
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
...
Alguém pode ativar um askpass não gráfico? Casual DuckDuckGo -ing não encontrou. Nota rsync-path
vai (IIRC) trabalhar com 'visiblepw' mas não nua / sem.
(3) sudoers.d/visiblepw
: DDG encontrado
http://www.sudo.ws/pipermail/sudo-users/2009-August/004142.html
> [sudo-users] Error: sudo: no tty present and no askpass program specified
> Todd C. Miller Todd.Miller at courtesan.com
> Mon Aug 3 10:43:04 EDT 2009
> Recent versions of sudo will refuse to prompt for a password if no tty is present,
> since it is not possible to turn off echo in this case. You can [enable this]
> with a line like:
> Defaults visiblepw
então criei
me@remote:~$ sudo cat /etc/sudoers.d/visiblepw
> Defaults visiblepw
que funciona, mas, como observado, echo
s pw quando sudo
ing remotamente ... mas agora eu posso, por exemplo, ssh remote 'sudo whatever'
... contanto que ninguém consiga ver a minha concha :-)
Eu gostaria de saber, existe uma maneira melhor de fazer isso? Estou esquecendo de algo? Note novamente, eu quero que funcione a partir de um script.
Mais uma coisa (anotada enquanto escrevo), que encontrei enquanto escrevia, e não tentei, porque parece feia:
(4) mkfifo
hoop-jumping : parece feio e pouco roteirizado. Estou faltando alguma coisa?