scp usando uma senha na linha de comando

1

Estou tentando escrever um script que implantará uma compilação criada em minha máquina de desktop (windows / cygwin) em uma máquina no meu ambiente de teste (linux).

Eu gostaria de usar scp para copiar a compilação para a máquina de destino. A única conta na máquina de destino é a raiz e não posso criar um usuário especial para essa tarefa. O usuário root não consegue efetuar login usando uma chave ssh (suspeito que isso esteja configurado no servidor ssh, mas não sei quais opções de configuração controlam isso). De qualquer forma, não posso alterar a configuração do servidor ssh.

Minha máquina de desktop usa o Cygwin e eu tenho o ssh instalado. O que eu preciso é da linha de comando-fu que me permitirá colocar a senha na linha de comando.

Estou ciente dos perigos de ter uma senha de texto simples em um script de shell, mas isso não é uma preocupação aqui.

    
por spierepf 27.05.2014 / 15:47

2 respostas

3

IMO, sua melhor aposta é usar algum tipo de script esperado. Meus truques habituais para jogar uma senha em um comando como este não estão funcionando na minha instalação do Cygwin.

    
por 27.05.2014 / 15:53
5

Eu recomendo usar uma chave ssh para essa finalidade. Se você pode logar como root, você também pode mudar a configuração do servidor ssh.

Como a próxima opção, você pode definir a variável de ambiente SSH_ASKPASS para apontar para um script que você escreve, esse script apenas precisa mostrar a senha na stdout.

Existem alguns pré-requisitos para o SSH_ASKPASS funcionar:

  • O comando ssh não deve ter acesso a um tty.
  • O comando ssh deve achar que tem acesso a um servidor X. Deve ser suficiente ter as variáveis de ambiente necessárias definidas, mesmo que o servidor X para o qual elas apontam não exista.
  • O servidor deve suportar autenticação de senha.

Um problema que eu tive quando tentei fazer o acima com um sistema embarcado era um servidor ssh que não suportava autenticação de senha. Em vez disso, ele usava o teclado interativo, mas era configurado de maneira a parecer autenticação de senha.

Como último recurso, se nenhum dos itens acima funcionar, será necessário agrupar o comando ssh em um script, que falsifica um tty e alimenta a senha por meio disso. Eu usei expect para conseguir isso.

    
por 27.05.2014 / 16:05