[REOSLVIDO] scp pode receber a senha do usuário como parâmetro?

Iniciado por bred81, 10 de Setembro de 2009, 14:39

tópico anterior - próximo tópico

bred81

Estou construindo um script (bash) de backup que precisa transferir arquivos de um servidor para outro.
Para facilitar a vida da próxima pessoa que vier trabalhar no meu lugar, gostaria de criar um usuário somente para se logar no outro servidor para transferir estes arquivos e sua senha seria de conhecimento dos integrantes do suporte aqui da empresa.

Como deixar documentado o que cada comando faz na hora de exportar as chaves é complicado, até porque, quando eu me for (tomara que demore muito) a pessoa que assumir o meu lugar terá que exporta a chave dela e assim por diante.

Existe alguma maneira de eu usar scp -paramaetro "senha" backup_user@servidor:/diretorio?

----------

Essa aqui é porque ainda não pesquisei, mas já que estou usando o fórum...
- Como faço para mandar e-mail dizendo que o backup foi realizado com/sem sucesso?
- Dá pra gravar num arquivo de log meu script, todas as ações feitas?

[]'s
O que o Mario foi fazer no pscicólogo?
- Ele estava passando por uma fase difícil...

bruno_moita

Boa Tarde,

  Em relação ao scp sem senha, sugiro que estude o uso de chaves criptografadas. Estou com a mesma dúvida, e até agora é a melhor solução que eu encontrei. Aqui está um bom artigo sobre oassunto: http://www.vivaolinux.com.br/dica/Utilizando-chaves-publicas-no-SSH-e-SCP

  Este é um scrpit que desenvolvi que logava e mandava e-mail. Para enviar e-mail conforme este scrpit, voce deve ter o pacote mailx instalado:

    http://www.vivaolinux.com.br/topico/Shell-Script/Funcao-nao-Funciona

bred81

Fazer por chaves eu sei, e pensando agora, eu até vou criar um usuário e exportar as chaves dele para não precisar ficar trocando.

Agora, fica essa dúvida. Gostaria até de ouvir um "não é possível" do que não ouvir nada...
=)
Valeu a ajuda com o script!
O que o Mario foi fazer no pscicólogo?
- Ele estava passando por uma fase difícil...

clcampos

bred81 eu não vi seu tópico, acho que to ficando cego.

Precisei usar o scp assim como você, e achei aqui no fórum a solução, veja: aqui.

Eu só tomei o cuidado para no meu script não deixar a senha gravada, então como todas as máquinas o usuário administrador possui a mesma senha, eu a peço no início e deixo na linha do scp a variável com a senha.

Ai quando o script fecha tchau, a senha esta protegida.
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

bred81

Citação de: clcampos online 11 de Setembro de 2009, 23:23
bred81 eu não vi seu tópico, acho que to ficando cego.

Precisei usar o scp assim como você, e achei aqui no fórum a solução, veja: aqui.

Eu só tomei o cuidado para no meu script não deixar a senha gravada, então como todas as máquinas o usuário administrador possui a mesma senha, eu a peço no início e deixo na linha do scp a variável com a senha.

Ai quando o script fecha tchau, a senha esta protegida.

Ajudou batante!
Aquela dúvida: sshpass = scp?
O que o Mario foi fazer no pscicólogo?
- Ele estava passando por uma fase difícil...

clcampos

#5
Citação de: bred81 online 12 de Setembro de 2009, 18:34
Ajudou batante!
Aquela dúvida: sshpass = scp?

Não. O comando será:

Citarsshpass    -p     'senha_do_usuario'      scp      arquivo_a_copiar       usuario_a_copiar@ip:path_destino

Neste exemplo acima estou copiando algo daqui para outra máquina.
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

bred81

clcampos,

a pergunta que eu fiz foi errada...
O que quis perguntar foi: sshpass vem instalado com o ssh/scp?

Fiz essa pergunta mais porque estou longe do trabalho, amanhã vou colocar aqui o meu script e por favor, deem uma opinião...
=)
O que o Mario foi fazer no pscicólogo?
- Ele estava passando por uma fase difícil...

clcampos

Citação de: bred81 online 13 de Setembro de 2009, 20:19
clcampos,

a pergunta que eu fiz foi errada...
O que quis perguntar foi: sshpass vem instalado com o ssh/scp?

Fiz essa pergunta mais porque estou longe do trabalho, amanhã vou colocar aqui o meu script e por favor, deem uma opinião...
=)


Se me lembro bem você vai ter que instalar o pacote.
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

Solid One

Citação de: clcampos online 11 de Setembro de 2009, 23:23
bred81 eu não vi seu tópico, acho que to ficando cego.

Precisei usar o scp assim como você, e achei aqui no fórum a solução, veja: aqui.

Eu só tomei o cuidado para no meu script não deixar a senha gravada, então como todas as máquinas o usuário administrador possui a mesma senha, eu a peço no início e deixo na linha do scp a variável com a senha.

Ai quando o script fecha tchau, a senha esta protegida.

hmm. estou curioso. como o seu script faz pra realizar essa operação sem deixar a senha gravada de algum modo?

a princípio, pensei em incluir a senha dentro do próprio script, mas não é a melhor solução.


#!/bin/sh
sshpass -p 'senha' ssh e-teca01.local 'notify-send teste'
sshpass -p 'senha' ssh e-teca02.local 'notify-send teste'
sshpass -p 'senha' ssh e-teca03.local 'notify-send teste'


depois, pensei em passar a senha como argumento:


#!/bin/sh
sshpass -p '$@' ssh e-teca01.local 'notify-send teste'
sshpass -p '$@' ssh e-teca02.local 'notify-send teste'
sshpass -p '$@' ssh e-teca03.local 'notify-send teste'

./script senha

mas assim, a senha fica salva no arquivo ~/.bash_history.

como você fez? algum mecanismo que o script peça pra digitar a senha dentro da execução do mesmo?

clcampos

Basta pedir a senha ao se executar o script.

Acho a melhor opção nesse caso.

Ou então vai ter que complicar e usar criptografia do arquivo com a senha. Mas nesse caso existem outras formas melhores de usar o ssh sem necessitar de senha.
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

Solid One

hmm. poderia mostrar o trecho do script que o faz pedir a senha ao ser executado, pra em seguida jogar como argumento pros comandos seguintes?

clcampos

Citação de: Solid One online 16 de Setembro de 2009, 18:55
hmm. poderia mostrar o trecho do script que o faz pedir a senha ao ser executado, pra em seguida jogar como argumento pros comandos seguintes?

Posso sim. Para rodar o script que vou colar aqui você deve ter o dialog (acho que já vem instalado) e o zenity instalados.

Para confirmar digite:

sudo   aptitude   install   zenity

O script (que só faz pegar a senha de três formas diferentes e depois apresentá-la) é:

Citar#!/bin/bash
#
# Script que pede sendo usuário de três formas
#
# Cristiano
# 16/Set/2009
#

#
# Via console - usando "echo"
################################
clear  # Limpando a tela

echo -e "Informe a senha para acesso: \033[8m\c"
read senha
echo -e "\033[0m"

echo -e "\n\nA senha digitada foi: \033[1m$senha\033[0m\n\nTecle <\033[1mEnter\033[0m> para continuar."
read espera

#
# Via console - usando dialog
###################################
senha=$( dialog --stdout --passwordbox "Informe a senha para acesso:" 10 40  2>&1 )

dialog --msgbox "A senha digitada foi: $senha" 8 40

#
# Agora usando o zenity
####################################
senha=$( zenity --entry --text "Informe a senha para acesso:" --hide-text )

zenity --info --text "A senha digitada foi: $senha"


Para usar a senha digitada (pegando o script como exemplo) basta usar no lugar da senha a variável $senha, que foi a variável que usei em todas as 3 formas.
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

bred81

Olha como de vez em quando a gente não pensa...

A gente acabou optando por essa solução:
Vamos compartilhar a pasta que precisava acessar na rede, dando permissão de leitura/escrita/execução somente para os usuários de um determinado grupo.
Depois vamos colocar esta pasta pra montar automaticamente e tudo fica uma belezura!
O que o Mario foi fazer no pscicólogo?
- Ele estava passando por uma fase difícil...

Solid One

muito obrigado, cara. agora que a senha é recebida pelo script, isso vai facilitar muito o trabalho da gente aqui. não vou precisar mais redigitar a mesma senha 35 vezes.

bred81

O que o Mario foi fazer no pscicólogo?
- Ele estava passando por uma fase difícil...