sshpass+ubuntu server 10.04+ubuntu desktop 11:10 não roda.

Iniciado por valdineysr, 29 de Março de 2012, 09:13

tópico anterior - próximo tópico

valdineysr

Olá a todos,
Bem recentemente resolvi mudar a versão do meu ubuntu de 10.04 para 11:10, porque? Minha maquina nova não rodava com 10.04.

Porém eu tinha feito alguns scripts pra automatizar algumas tarefas da minha maquina para um servidor ubuntu 10.04. Só que agora não estão funcionando na versão 11.10 os scripts eram baseados em sshpass.

o que acontece na verdade é que quando eu rodo qualquer um dos scripts, eles executam, mas não fazem nada.

porém quando faço o comando ssh ele conecta sem problemas.

o que poderia ser isso?
Valdiney Ribeiro
---------------------------------
Analista de Sistemas

zekkerj

Não sei o que é o sshpass. Mas se for algum pacote que faça conexão com o ssh, ele pode ter armazenado de alguma forma a identificação da instalação antiga do servidor, e agora vc precisa fazer com que ele registre a nova identificação (chave pública).
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

valdineysr

Citação de: zekkerj online 29 de Março de 2012, 11:01
Não sei o que é o sshpass. Mas se for algum pacote que faça conexão com o ssh, ele pode ter armazenado de alguma forma a identificação da instalação antiga do servidor, e agora vc precisa fazer com que ele registre a nova identificação (chave pública).

Nesse caso eu já limpei o arquivo que fica na pasta oculta .ssh, se for só isso não rolou.
Valdiney Ribeiro
---------------------------------
Analista de Sistemas

zekkerj

Pois é, mas e o sshpass, onde ele guarda essa informação?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

valdineysr

Citação de: zekkerj online 04 de Abril de 2012, 09:48
Pois é, mas e o sshpass, onde ele guarda essa informação?
na verdade o sshpass ele se utiliza do ssh para fazer autenticações automáticas.
Valdiney Ribeiro
---------------------------------
Analista de Sistemas

zekkerj

Então ele está guardando isso em outra área. Talvez em outro usuário?
Outra coisa, vc sabe que basta usar um certificado de criptografia em lugar da senha, pra poder colocar chamadas ao ssh num script, não? O sshpass deve fazer exatamente isso [espero].
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

raidicar

Boa tarde,

zekkerj, o sshpass joga a senha em cima do ssh para não ser necessário a digitação de senha ou trabalhar com chaves (o que eu prefiro).
EX: sshpass -p senha ssh root@192.168.0.1
Quando o servidor pedir a senha o sshpass responde automaticamente com a que informou, sendo desnecessário sua digitação e o acesso passa a ser automático.
O sshpass não guarda qualquer informação de hosts, usuários, etc..., não existe um arquivo dele a ser limpo muito menos algum arquivo de configuração a ser revisto dependendo do usuário, formatação.... É uma aplicação simples e tem utilidade em redes com uma quantidade grade de hosts onde os mesmos costumam ser formatados rotineiramente, como caixas de supermercados, farmácias, terminais burros... Nesse caso, devido a grande quantidade de hosts, trabalhar com chaves é impossível quando um monte de hosts se comunica com outro monte (Imagina o trabalho, devido a formatação de UM host deve-se criar novamente a chave e inseri-la em centenas de hosts, bem como inserir as chaves dessas centenas de hosts no host recém formatado).
O sshpass permite a comunicação do ssh informando a senha, recurso que o ssh por segurança não tem e, nesse caso, lhe permite criar scripts para transferência de dados entre os hosts sem a necessidade de senha e melhor, se um computador é formatado, não é preciso criar chaves e ficar adicionando as chaves em um monte de micros.

valdineysr, Primeiro:
Está atento ao usuário como que o script roda e tenta conectar no servidor?
Quando usa o sshpass direto no terminal, ele conecta ou apresenta erro?
Se conectar, legal, se não conectar então o script também não vai conectar.

Supondo que ele realize a conexão, quando você executa o script nada acontece? nenhuma mensagem? Já dentou dentro do script tentou gerar redirecionamentos para analisar o resultado? Ex:

na linha:
sshpass -p senha ssh usuario@servidor "df -h"

Você insere:
sshpass -p senha ssh usuario@servidor "df -h" 2>> /tmp/logorm1.log >> /tmp/logorm2.log;
Dessa forma o comando gera dois arquivos, um com o resultado do comando e outro com o resultado dos erros.
Isso pode lhe permitir analisar o que ocorre.

Outra coisa é o known_hosts.
Quando conecta em um servidor, com o usuário root, por exemplo. No host é adicionado uma identificação do servidor no /root/.ssh/known_hosts.
Havendo formatações. é preciso retirar desse arquivo possiveis identificações ou mesmo limpar esse arquivo.
Depois é preciso realizar uma conexão via ssh normal e responder SIM a pergunta para adicionar a identificação no Known_hosts.
Depois podemos voltar a usar o sshpass.


Att,
Quem ama extremamente, deixa de viver em si e vive no que ama. Na vida três coisas são certas, o amor, a morte e o Linux !
Se Platão disse, então realmente sofremos de uma perigosa doença mental.

zekkerj

CitarImagina o trabalho, devido a formatação de UM host deve-se criar novamente a chave e inseri-la em centenas de hosts
Pra isso há o ssh-keygen. É só trabalhar com uma chave fixa... formatou? Joga de novo a mesma chave no host.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

raidicar

Citação de: zekkerj online 04 de Abril de 2012, 15:29
Pra isso há o ssh-keygen. É só trabalhar com uma chave fixa... formatou? Joga de novo a mesma chave no host.

Concordo plenamente, não recomendo o uso, no entanto, para jogar a chave lá vai precisar de intervenção humana e essa pecinha me dava um trabalho...

Exemplo: Tinha o seguinte quadro:
10149 estações Linux (Caixas de supermercado).
Cada loja tinha entre 20/30 caixas com linux.
Eu era responsável pela atualização, servidores... mas não tinha qualquer relação com os níveis de suporte abaixo ou técnicos de campo.

Era transferido do ERP aos caixas diferentes arquivos referente a atualização de preços, imagens, usuários (operadoras, fiscais, etc...), e outros.
O Problema é que quando um caixa estava desligado, não recebia a atualização, outros recebiam mas não aplicavam, etc...
Não tinha contato com a equipe de suporte de campo que formatava uns 15 caixas por dia (só deus sabia quais eram formatados).
Eles formatavam, configuravam o IP e iam para o próximo atendimento.

Existia um problema de organização e comunicação que estava além do meu cargo, me restava apenas sofrer as consequências.
Criei uma rotina com o ssh + rsync para sincronizar os arquivos de preço, imagens, acesso, bibliotecas, binários e demais atualizações entre os caixas de acordo com a data de criação. Rodava em todo caixa de 15 em 15 minutos.

O problema é que precisava sincronizar todos os caixas e para garantir isso sem depender de pessoas, o sshpass resolvia.
Com chave tinha problemas de caixas formatados sem chave, do técnico que colocava a chave no lugar errado.
Era muito dificil gerenciar mais de 10.000 hosts, sendo que o host podia estar com apenas um arquivo desatualizado.
E caixa com preço errado é multa. Maior dor de cabeça.
O sshpass resolveu o meu problema (Em partes por que passei a ter problemas com técnicos que cadastravam a senha errada durante a instalação... Até Isso!), no entanto existe uma falha enorme no sshpass: a senha fica exposta.
Não o utilizo sshpass para os servidores e nem recomendo o uso em estações, mas eu não consegui evitar.

Mas você está certo zekkerj, chave é segura e deve ser utilizado.
Na verdade, não sei se concorda comigo mas o sshpass é. na verdade, uma gambiarra.

valdineysr, manda ai mais informações...
Quem ama extremamente, deixa de viver em si e vive no que ama. Na vida três coisas são certas, o amor, a morte e o Linux !
Se Platão disse, então realmente sofremos de uma perigosa doença mental.

zekkerj

CitarNa verdade, não sei se concorda comigo mas o sshpass é. na verdade, uma gambiarra.
A gente começa nossa conversa por aqui. ;)

CitarO sshpass resolveu o meu problema (Em partes por que passei a ter problemas com técnicos que cadastravam a senha errada durante a instalação... Até Isso!),
Vcs não usavam instalação por imagem? Poderiam gerar a imagem já com as chaves instaladas... ou talvez personalizar o cd de instalação, não?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

raidicar

zekkerj, se eu falar tu não vai acreditar. Por isso me refiro a essa empresa utilizando verbo no pretérito!
Era pior que órgão do governo, desvio, desvio e desvio... irregularidades a todo lado e a estrutura capenga.

Havia uma imagem e a mesma era feita pela empresa dona do ERP.
Por contrato, qualquer alteração na imagem os ausentava de multa e por isso tínhamos de usar o que era fornecido.
Essa empresa se negava a inserir qualquer arquivo na imagem por que a mesma era instalada em diferentes clientes.
Não podíamos insistir por que existia um "vinculo (R$)" entre o dono dessa empresa e alguns membros da diretoria.

Se eu te listar o numero de gambiarras (incluindo o sshpass) que tive de usar pra gerir aquilo tu não acredita.
A gota d'água foi quando atualizaram todos os hosts, limparam o backup e depois disso não passava cartão em nenhum.
Por que fizeram isso? Maldade.... não, era cagada mesmo. Ordem direta do Gestor (que não era da área e tinha parentesco com a diretoria)!
Ninguém sabia como corrigir ou desfazer... E tome mais um script que era acionado quando um cliente passava cartão.
Era preciso um conjunto de scripts pra corrigir os erros daquilo.

Eu estava morrendo lá, voltei a viver depois que sai! ;D
Quem ama extremamente, deixa de viver em si e vive no que ama. Na vida três coisas são certas, o amor, a morte e o Linux !
Se Platão disse, então realmente sofremos de uma perigosa doença mental.

valdineysr

Citação de: raidicar online 04 de Abril de 2012, 14:32
Boa tarde,

zekkerj, o sshpass joga a senha em cima do ssh para não ser necessário a digitação de senha ou trabalhar com chaves (o que eu prefiro).
EX: sshpass -p senha ssh root@192.168.0.1
Quando o servidor pedir a senha o sshpass responde automaticamente com a que informou, sendo desnecessário sua digitação e o acesso passa a ser automático.
O sshpass não guarda qualquer informação de hosts, usuários, etc..., não existe um arquivo dele a ser limpo muito menos algum arquivo de configuração a ser revisto dependendo do usuário, formatação.... É uma aplicação simples e tem utilidade em redes com uma quantidade grade de hosts onde os mesmos costumam ser formatados rotineiramente, como caixas de supermercados, farmácias, terminais burros... Nesse caso, devido a grande quantidade de hosts, trabalhar com chaves é impossível quando um monte de hosts se comunica com outro monte (Imagina o trabalho, devido a formatação de UM host deve-se criar novamente a chave e inseri-la em centenas de hosts, bem como inserir as chaves dessas centenas de hosts no host recém formatado).
O sshpass permite a comunicação do ssh informando a senha, recurso que o ssh por segurança não tem e, nesse caso, lhe permite criar scripts para transferência de dados entre os hosts sem a necessidade de senha e melhor, se um computador é formatado, não é preciso criar chaves e ficar adicionando as chaves em um monte de micros.

valdineysr, Primeiro:
Está atento ao usuário como que o script roda e tenta conectar no servidor?
Quando usa o sshpass direto no terminal, ele conecta ou apresenta erro?
Se conectar, legal, se não conectar então o script também não vai conectar.

Supondo que ele realize a conexão, quando você executa o script nada acontece? nenhuma mensagem? Já dentou dentro do script tentou gerar redirecionamentos para analisar o resultado? Ex:

na linha:
sshpass -p senha ssh usuario@servidor "df -h"

Você insere:
sshpass -p senha ssh usuario@servidor "df -h" 2>> /tmp/logorm1.log >> /tmp/logorm2.log;
Dessa forma o comando gera dois arquivos, um com o resultado do comando e outro com o resultado dos erros.
Isso pode lhe permitir analisar o que ocorre.

Outra coisa é o known_hosts.
Quando conecta em um servidor, com o usuário root, por exemplo. No host é adicionado uma identificação do servidor no /root/.ssh/known_hosts.
Havendo formatações. é preciso retirar desse arquivo possiveis identificações ou mesmo limpar esse arquivo.
Depois é preciso realizar uma conexão via ssh normal e responder SIM a pergunta para adicionar a identificação no Known_hosts.
Depois podemos voltar a usar o sshpass.


Att,


Fera, o script cotinha o seguinte coteúdo.


#!/bin/bash
echo "Entre com password";
read -s senha;
sshpass -p $senha scp /home/informatica/dhcpd.conf root@192.168.0.1:/etc/dhcp3;
sshpass -p $senha ssh root@192.168.0.1 -p22 -t "/etc/init.d/dhcp3-server restart";



Como eu havia dito, mesmo eu rodando apenas o comando direto no terminal ele não dá sinal se conectou ou não.
Minha máquina só possui um usuário. Não uso root na minha maquina, portanto a possibilidade deu ter acessado pelo root é nula e o ssh não precisa de sudo. Então não creio que seja por ai.

Uma coisa que ainda não entendi é , como ele conecta via ssh e não conecta acrescido do sshpass, sendo que ele se utiliza da mesma relação de confiança?




Valdiney Ribeiro
---------------------------------
Analista de Sistemas

zekkerj

tenta mudar o script para que o comando ssh seja chamado com um "-v".   Algo assim:


(..)
sshpass -p $senha ssh -v root@192.168.0.1 -p22 -t "/etc/init.d/dhcp3-server restart";


Depois acompanhe os logs do serviço.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D