Copie o arquivo via scp de uma máquina remota que precisa de acesso root (com acesso remoto remoto desativado) [duplicado]

0

Estou na máquina A e quero executar um script bash de A para copiar alguns arquivos de B via scp . Esses arquivos são armazenados em um caminho que precisa de root access para ser acessado, mas root remote access está desabilitado para ssh em B. Não consigo alterar essa configuração.

As instruções scp padrão não funcionam, pois não me pedem para digitar a senha root de B durante scp execução em A.

Como posso fazer?

    
por floatingpurr 18.07.2016 / 13:27

1 resposta

0

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.

    
por 18.07.2016 / 19:07

Tags