Como ler a senha da variável?

0

Estou tentando mover meu arquivo para outro sistema que está localizado em algum outro lugar, com este comando:

rsync -avrz  src destination

Funciona bem. Mas o que eu preciso é colocar este comando no shell script e executá-lo como:

#! /bin/sh
rsync -avrz  srcfilelocation destination

Quando executado, ele solicita a senha do sistema de destino. Eu sei essa senha e dou manualmente.

Agora, decidi atribuir a senha a uma variável de ambiente, como pswd="destination system password" . Eu preciso do meu shell script para ler a senha dessa variável. Como posso escrever um script para fazer isso?

    
por Viswa 05.07.2012 / 12:55

2 respostas

2

Você não precisa se preocupar com senhas quando pode usar algo chamado Infra-estrutura de chave pública.

Este é um método de usar chaves públicas e privadas para autenticar um usuário. Você armazena uma cópia de sua chave privada e o outro servidor tem uma cópia de sua chave pública. Quando você faz login, eles conversam um com o outro, o que confirma que as chaves pública e privada coincidem para que você possa fazer login sem digitar uma senha.

Isso é tão seguro quanto qualquer coisa, desde que você não compartilhe sua chave privada com ninguém!

Configurar isso é muito simples.

Na máquina de origem, execute ssh-keygen. Você pode aceitar todos os padrões, isso será suficiente para este propósito. Ele irá gerar suas chaves privadas (id_rsa) e públicas (id_rsa.pub) em sua pasta ~ / .ssh.

Agora você deseja obter a chave pública no servidor, o que também é fácil.

No pc de origem, execute ssh-copy-id username @ servername.

Isto irá colocar uma cópia do conteúdo do id_rsa.pub no ~ / .ssh / authorized_keys do servidor.

Agora, se você enviar ssh da origem para o destino, você entrará sem precisar de uma senha.

Como isso afeta o rsync eu ouço você perguntar? O Rsync usa ssh!

Por favor, lembre-se: NUNCA DESISTE SUA CHAVE PRIVADA (id_rsa) ou alguém pode fingir ser você.

    
por SuperMatt 05.07.2012 / 13:11
1

Eu recomendo usar as chaves PKI / SSH para fazer isso, mas se você precisar, pode definir uma variável de ambiente da seguinte forma:

export RSYNC_PASSWORD="yourPasswordHere"

Por favor, note que isso tem algumas implicações potenciais de segurança e só estará disponível na sessão atual.

Para adicionar isso à sessão de um usuário por padrão:

echo 'export RSYNC_PASSWORD="yourPasswordHere"' >> ~/.bashrc

Como alternativa, você pode usar um arquivo de senha para armazenar sua senha. Por favor, note que a senha está em texto simples, então você deve tomar medidas para protegê-la.

echo "yourPasswordHere" > yourPasswordFile.txt
rsync -avrz --password-file yourPasswordFile.txt src dest
    
por 796m9XfYTkmp 19.04.2018 / 21:14