Publicada por A-JuDy em 23/07/2007 - 12:20h:
* A-JuDy usa Slackware

Gostaria de um script para trocar a senha do root via ssh..
O passwd pede que a senha seja digitada e eu gostaria que a senha fosse enviada via linha de comando utilizando a senha $PASS...

Alguém sabe como me ajudar? Ou se isso é possivel?

Abraços.

#!/bin/bash
PASS="LaLaLa"
for Ip in `cat /Unidades`
do
ssh $Ip "passwd"
done

  
 
Resposta de SMarcell em 23/07/2007 - 13:58h:
* SMarcell usa Slackware
* SMarcell tem conceito: 9.2
 


Dá uma olhada aqui:

>> http://www.g2ctech.com/artigos/ssh-sem-senha.html

Acho que dá pra ter uma idéia de como fazer o script! =)

Falou!!!

 
Resposta de A-JuDy em 23/07/2007 - 14:09h:
* A-JuDy usa Slackware
* A-JuDy tem conceito: 10.0
 


Marcel,

Esse link não me ajudou não.. isso ai é para gerar as chaves para que a senha não seja solicitada quando dou o ssh e o que eu quero é trocar as senhas..
Tenho q fazer a troca da senha em mais de 50 máquinas e por isso não queria fazer uma a uma.. queria fazer um script para isso..

Abraços.

 
Resposta de elgio em 01/08/2007 - 20:49h:
* elgio usa OpenSuSE
* elgio tem conceito: nenhum voto.
 


OBS: Esta resposta foi substituida de forma mais eficiente pela PROXIMA!!


O problema é que o binário passwd não aceita a senha se não for digitada. Ele até testa se esta mesmo em um terminal válido. Então, por este método, acho que não dá.

Uma distribuição tinha um binário autopasswd, só que não achei ele.
A sintaxe era "autopasswd senha" e ele colocava a senha. Ai bastaria fazer:

ssh root@servidor "autopasswd novasenha"

Tv tenha algum binário que aceite senha por parâmetro. Senão se constroi um :-D

Pensei (não muito eficiente, mas) eu algum script assim:

#!/bin/bash
SENHA="NovaSenha" # nova senha

# PAra gerar um hash MD5 da senha, o padrao usado no Linux
HASH="`mkpasswd $SENHA`"

# Escrevendo um novo /etc/shadow, substituindo o HASH pelo novo
ssh root@servidor "cat /etc/shadow|
sed \"s~^root:[^:]\+:\(.\+\)$~root:${HASH}:\1~\" > /tmp/novoshadow ; mv -f /tmp/novoshadow /etc/shadow"


Eu testei e FUNCIONOU!
Nota, teste com muita calma.
Teste em uma maquina tendo feito BACKUP do /etc/shadow antes e MANTENHA-SE logado nela como root, pois se der xabu (acho que nao) tu ja estas autenticada.

Ta sujo, imundo, mas funciona.

BUG: cria um hash DES, fraco. Tentei fazer com MD5, mas tive problemas com o $1$ que nao passou pelo sed. Se alguem ai quiser melhorar. Para hashes md5 deve-se passar mkpasswd -H md5


 
Resposta de elgio em 02/08/2007 - 10:01h:
* elgio usa OpenSuSE
* elgio tem conceito: nenhum voto.
 


Oi denovo.

Dei uma melhorada no meu script de ontem a noite, agora deixando-o mais facil de entender e aceitanto MD5, que é muito mais seguro. Ele agora também faz BACKUP do /etc/shadow. Testei e FUNCIONA.

O único inconveniente é que tu vai precisar digitar a senha do ssh para cada um dos servidores.

A idéia deste script é mexer manualmente no /etc/shadow, onde a senha é armazenada (na verdade o HASH dela), ao invés de usar o passwd. É necessário que na máquina de onde tu estás disparando o script exista o binário mkpasswd, que gera um hash a partir de uma senha.

No mais, divirta-se (estou te enviando também por email, por ser meio grande. Espero que as linhas não sejam quebradas aqui neste post!!)

#!/bin/bash

# Script para trocar senha remotamente (do root) via ssh

# Nova Senha
SENHA="teste123"

# Gerando o HASH Md5 desta senha (usado no Linux)
HASHMD5="`mkpasswd -H md5 $SENHA`"

# Como o binario passwd exige que se digite a senha duas
# vezes e nao aceita entrada padrao e nem parametros,
# a ideia eh editar MANUALMENTE o /etc/shadow, plantando
# o HASH do root no lugar certo

# Arquivo de hash temporario
TEMP="/tmp/novoSHADOW"

# Agora este escript faz BACKUP do /etc/shadow
# O backup sera salva com o nome /etc/shadow-ANODIAMES-SEGUNDOS
BACKUP="/etc/shadow-`date "+%y%m%d-%s"`"

echo $HASHMD5

# Agora vem o ssh. Neste caso quem executar o script devera
# digitar a senha de login antiga do ssh, a menos que se
# esteja realizando autenticacao via chave publica (sem senha)
for Ip in `cat Unidades`
do
(
   cat << END
   cp /etc/shadow $BACKUP
   echo -n 'root:${HASHMD5}:' > $TEMP
   grep "^root:" /etc/shadow | cut -d: -f3- >> $TEMP
   grep -v "^root:" /etc/shadow >> $TEMP
   mv -f $TEMP /etc/shadow
END
)|ssh root@${Ip} 2>/dev/null
   echo "Senha trocada no servidor $Ip"
done
# FIM


 
Resposta de a-judy em 02/08/2007 - 15:35h:
* a-judy usa Slackware
* a-judy tem conceito: 10.0
 


Olá elogio!

O problema é exatamente este.. não queria ter que digitar a senha para cada servidor toda vez que tivesse que trocar a senha deles... queria rodar um script que já fizesse tudo sozinho...

Vou dar uma olhada no seu script para ver se me adianta..

Agora pensei em fazer outra coisa. Alterar o arquivo passwd em um local e copiar (por scp) para os outros.. fazendo assim a substitução da senha..
Para isso preciso ter certeza que os usuários de todas as máquinas sejam os mesmos..

Obrigada pela ajuda!!

Abraços

 
Resposta de a-judy em 02/08/2007 - 15:41h:
* a-judy usa Slackware
* a-judy tem conceito: 10.0
 


elogio,

Re-li a sua respota e acho que seria isso ai mesmo!! o shadow que eu preciso alterar..
Vou testar aqui e posto se deu certo!

Abraços!

 
Resposta de elgio em 02/08/2007 - 15:42h:
* elgio usa OpenSuSE
* elgio tem conceito: nenhum voto.
 


Normalmente tu vai precisar digitar:

1) A senha de root para se logar na maquina
2) A nova senha para o usuario 2x

O item 2 é resolvido pelo meu script, já o item 1 não, pois é coisa do ssh.

Para o item 1 é que a resposta do SMarcell serve.

Juntando o login sem senha + script para trocar a senha remotamente, acho que tens o que tu quer.

Só tem um agravante: para funcionar antes tu precisa criar um par de chaves e depositar ela em cada servidor! Será útil para o futuro.

 
Resposta de a-judy em 02/08/2007 - 16:01h:
* a-judy usa Slackware
* a-judy tem conceito: 10.0
 


Isso..
Aqui eu não preciso mais de senha pra logar não .. já está tudo no esquema! :)
O problema só era a troca das senhas mesmo!

Valeu!

 
Resposta de Maestro_Ba em 25/01/2008 - 15:29h:
* Maestro_Ba usa RedHat
* Maestro_Ba tem conceito: nenhum voto.
 


?comentario=
E que tal fazer o seguinte?
1 - Buscar por SSH o ficheiro /etc/shadow
2 - Alterá-lo no seu servidor
3 - Copiá-lo novamente por SSH

Parece ser um método bem simples!

 
Resposta de elgio em 25/01/2008 - 15:56h:
* elgio usa OpenSuSE
* elgio tem conceito: nenhum voto.
 


Sim, simples.
http://www.vivaolinux.com.br/scripts/verScript.php?codigo=2921

:-D

  


ATENÇÃO: Antes de contribuir com uma resposta, leia o artigo Qualidade de respostas e certifique-se de que esteja realmente contribuindo com a comunidade. Muitas vezes o ímpeto de contribuir nos leva a atrapalhar ao invés de ajudar.

Contribuir com resposta



CAPTCHA
[ Recarregar imagem ]

Digite o código acima:

  
* Nota: só é possível enviar respostas usuário que possui conta e esteja logado com ela, caso contrário sua mensagem será perdida.



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts