Como usar senhas criptografadas em scripts bash

Jun 30, 2025
Linux
Fatmawati Achmad Zaenuri / Shutterstock.com

Se você for forçado a usar um script Linux para se conectar a um recurso protegido por senha, provavelmente se sentirá desconfortável em colocar essa senha no script. OpenSSL resolve esse problema para você.

Senhas e Scripts.

Não é uma ótima idéia colocar senhas em scripts de shell. Na verdade, é uma ideia muito ruim. Se o script cair nas mãos erradas, todos que lêem podem ver o que é a senha. Mas se você é forçado a usar um script, o que mais você pode fazer?

Você pode inserir a senha manualmente quando o processo atingir esse ponto, mas se o script for executado sem supervisão, isso não funcionará. Felizmente, há uma alternativa para codificar as senhas no script. Contra-intuitivamente, usa uma senha diferente para conseguir isso, juntamente com alguma criptografia forte.

No nosso exemplo de cenário, precisamos fazer uma conexão remota com um computador Fedora Linux do nosso computador Ubuntu. Nós estaremos usando um script de shell bash para fazer uma conexão ssh para o computador fedora. O script deve ser executado sem supervisão e não queremos colocar a senha para a conta remota no script. Não podemos usar chaves SSH neste caso, porque estamos fingindo que não temos nenhum controle de controle ou administrador sobre o computador Fedora.

Nós vamos fazer uso do bem conhecido OpenSSL Toolkit Para lidar com a criptografia e um utilitário chamado sshass para alimentar a senha no comando ssh.

RELACIONADO: Como criar e instalar chaves ssh do shell Linux

Instalando openssl e sshass

Como muitas outras ferramentas de criptografia e segurança usam OpenSSL, ele já pode ser instalado no seu computador. No entanto, se não for, leva apenas um momento para instalar.

No Ubuntu, digite este comando:

 sudo apt obter openssl 

Para instalar sshass , use este comando:

 sudo apt instalar sshass 

No Fedora, você precisa digitar:

 sudo dnf instalar openssl 

O comando para instalar sshass é:

 sudo dnf instalar sshass 

No Manjaro Linux, podemos instalar o OpenSSL com:

 sudo pacman -sy openssl 

Finalmente, para instalar sshass , use este comando:

 sudo pacman -sy sshass 

Criptografando na linha de comando

Antes de entrarmos em usar o openssl. Comando com scripts, vamos nos familiarir com isso usando-o na linha de comando. Digamos que a senha da conta no computador remoto seja Rusty! Herring.pitshaft. . Nós vamos criptografar essa senha usando openssl. .

Precisamos fornecer uma senha de criptografia quando fizermos. A senha de criptografia é usada nos processos de criptografia e descriptografia. Há muitos parâmetros e opções no openssl. comando. Vamos dar uma olhada em cada um deles em um momento.

 Echo 'Rusty! Herring.pitshaft' | OpenSSL ENC -AE-256-CBC -MD SHA512 -A -PBKDF2 -PBKDF2 -PTE 100000 -Salt -Pass Pass: 'pick.your.password' 

Estamos usando eco Para enviar a senha da conta remota através de um tubo e no openssl. comando.

o openssl. Parâmetros são:

  • ENC-256-CBC : O tipo de codificação. Estamos usando o. Padrão de criptografia avançada. Cifra chave de 256 bits com encadeamento de bloco de cifra.
  • -md sha512. : O tipo Digest (hash) de mensagem. Estamos usando o algoritmo criptográfico SHA512.
  • -uma : Isso diz openssl. Para aplicar codificação base 64 após a fase de criptografia e antes da fase de descriptografia.
  • -pbkdf2. : Usando a função de derivação de chave baseada em senha 2 (PBKDF2) torna muito mais difícil para que um ataque de força bruta tenha sucesso em adivinhar sua senha. O PBKDF2 requer muitos cálculos para realizar a criptografia. Um atacante precisaria replicar todos esses cálculos.
  • -iter 100000. : Define o número de cálculos que o PBKDF2 usará.
  • -sal : Usar um valor de sal aplicado aleatoriamente faz a saída criptografada de cada vez, mesmo que o texto simples seja o mesmo.
  • -Pass pass: 'pick.your.password' : A senha que precisaremos usar para descriptografar a senha remota criptografada. Substituto pick.your.password. com uma senha robusta de sua escolha.

A versão criptografada do nosso Rusty! Herring.pitshaft. A senha é gravada na janela do terminal.

Para descriptografar isso, precisamos passar essa string criptografada openssl. com os mesmos parâmetros que usamos para criptografar, mas adicionando no -d. (descriptografar) opção.

 Echo u2fsdgvkx19iiirnhesg + wm / ukjtzjwnyopjzphyrdkyzh5lvzrpigo1s0Gozu46 | OpenSSL ENC -AE-256-CBC -MD SHA512 -A -D -PBKDF2 -PBKDF2Liter 100000 -Salt -Passe Pass: 'pick.your.password' 

A string é descriptografada e nosso texto original - a senha da conta de usuário remota - é escrita na janela do terminal.

Isso prova que podemos criptografar com segurança nossa senha de conta de usuário remota. Também podemos descriptografá-lo quando precisamos usando a senha que fornecemos na fase de criptografia.

Mas isso realmente melhora nossa situação? Se precisarmos da senha de criptografia para descriptografar a senha da conta remota, certamente a senha de descriptografia precisará estar no script? Bem, sim, isso acontece. Mas a senha da conta de usuário remota criptografada será armazenada em um arquivo oculto diferente. As permissões no arquivo impedirão ninguém além de você - e o usuário root do sistema, obviamente - de acessá-lo.

Para enviar a saída do comando de criptografia para um arquivo, podemos usar o redirecionamento. O arquivo é chamado ".secret_vault.txt." Nós mudamos a senha de criptografia para algo mais robusto.

 Echo 'Rusty! Herring.pitshaft' | OpenSSL ENC-256-CBC -MD SHA512 -A -PBKDF2 -PDE 100000 -Salt -Pass Pass: 'Secret # Vault! Senha' & GT; .secret_vault.txt 

Nada visível acontece, mas a senha é criptografada e enviada para o arquivo ".secret_vault.txt".

Podemos testar que funcionou descriptografando a senha no arquivo oculto. Note que estamos usando gato aqui não eco .

 gato .secret_vault.txt | OpenSSL ENC-256-CBC -MD SHA512 -A -D -PBKDF2 -Titer 100000 -Salt -Passe Pass: 'Secret # Vault! Senha' 

A senha é descriptografada com êxito a partir dos dados no arquivo. Nós vamos usar chmod. Para alterar as permissões sobre este arquivo para que ninguém mais possa acessá-lo.

 chmod 600 .secret_vault.txt 
 ls -l .secret_vault.txt 

Usar uma máscara de permissões de 600 remove todo o acesso para qualquer um que não seja o proprietário do arquivo. Agora podemos seguir em frente para escrever nosso script.

RELACIONADO: Como usar o comando chmod no Linux

Usando OpenSSL em um script

Nosso roteiro é bastante simples:

 #! / Bin / bash

# Nome da conta remota
Remote_user = geek

# Senha para a conta remota
Remote_Passwd = $ (CAT .SECRET_VAULT.TXT | OpenSSL ENC-256-CBC -MD SHA512 -A -D -PBKDF2 -PBKDF2 -Titer 100000 -Salt -Pass Passe: 'Secret # Vault! Senha')

# computador remoto
Remote_Linux = Fedora-34.Local

# Conecte ao computador remoto e coloque um timestamp em um arquivo chamado script.log
sshpass -p $ remote_passwd ssh -t $ remotar_user @ $ remote_Linux & lt; & lt; _remote_commands.
Echo $ User "-" $ (data) & gt; & gt; /home/$remote_user/script.log.
_remote_commands 
  • Nós definimos uma variável chamada Remote_user. para "geek".
  • Nós então definimos uma variável chamada Remote_passwd. Para o valor da senha descriptografada retirada do arquivo ".secret_vault.txt", usando o mesmo comando que usamos há alguns momentos.
  • A localização do computador remoto é armazenada em uma variável chamada Remote_lux. .

Com essa informação, podemos usar o ssh. comando para se conectar ao computador remoto.

  • o sshass O comando é o primeiro comando na linha de conexão. Nós usamos com o -p. opção (senha). Isso nos permite especificar a senha que deve ser enviada para o ssh. comando.
  • Nós usamos o -T. (desativar a alocação pseudo-terminal) com ssh. Porque não precisamos ter um pseudo-tty alocado para nós no computador remoto.

Estamos usando um curto Aqui documento para passar um comando para o computador remoto. Tudo entre os dois _remote_commands. As cadeias são enviadas como instruções para a sessão do usuário no computador remoto - neste caso, é uma única linha de script bash.

O comando enviado para o computador remoto simplesmente registra o nome da conta de usuário e um timestamp para um arquivo chamado "script.log".

Copie e cole o script em um editor e salve-o em um arquivo chamado "Go-remote.sh." Lembre-se de alterar os detalhes para refletir o endereço do seu próprio computador remoto, conta de usuário remota e senha de conta remota.

Usar chmod. para tornar o script executável.

 chmod + x go-remote.sh 

Tudo o que resta é para experimentá-lo. Vamos disparar nosso roteiro.

 ./ go-remote.sh 

Como nosso script é um modelo minimalista para um script desacompanhado, não há saída para o terminal. Mas se verificarmos o arquivo "script.log" no computador Fedora, podemos ver que as conexões remotas foram feitas com sucesso e que o arquivo "script.log" foi atualizado com timestamps.

 gato script.log 

Sua senha é privada

Sua senha de conta remota não é gravada no script.

E embora a senha de descriptografia é, No script, ninguém mais pode acessar seu arquivo ".secret_vault.txt" para descriptografá-lo e recuperar a senha da conta remota.


Linux - Artigos mais populares

Como bloquear o seu Mac usando o terminal

Linux Feb 16, 2025

Uma das primeiras regras da cibersegurança é sempre trancar o seu computador antes de se afastar dela. Embora possa não ser a maneira mais rápida, você pode bloquear o Apple Mac usa..


Como processar uma linha de arquivos por linha em um script linux bash

Linux Feb 3, 2025

Fatmawati Achmad Zaenuri / Shutterstock É bem fácil ler o conteúdo de uma linha de arquivo de texto Linux por linha em um script de shell - contanto que v..


Como atualizar Arch Linux

Linux Jul 30, 2025

Projeto Ubuntu. Chegou a hora de atualizar seu sistema Arch Linux? Se você está em arco puro ou uma distro de arco como Manjaro. e Garuda Linux,..


O que há de novo no GNOME 40?

Linux Jul 23, 2025

Fundação Gnome. O GNOME 40 tem mais que um novo esquema de numeração. Junto com seu novo visual vem uma nova maneira de trabalhar. As antigas metáforas ..


Como atualizar o Ubuntu Linux

Linux Aug 27, 2025

Tomeqs / shutterstock.com. Precisa do mais recente e maior no software Ubuntu? Você não precisa ser um Linux Pro. Leia para descobrir como atualizar o Clas..


Como executar apps Android no Linux

Linux Oct 19, 2025

quietbits / Shutterstock.com Sempre quis executar um aplicativo Android no Linux, mas não quer mexer com a depuração de pontes, ambientes de desenvolvimento..


Como atualizar o Fedora Linux

Linux Nov 10, 2024

Então, você finalmente baixou e instalou o Fedora Linux, mas agora você pode estar se perguntando, como você mantém seu sistema atualizado? Felizmente, o Fedora oferece alguns método..


7 Erros novos usuários do Linux cometem (e como evitá -los)

Linux Nov 11, 2024

Aprender o Linux pode ser uma experiência frustrante, onde tudo é uma coisa pequena como uma batalha. Evitar esses erros comuns tornará sua introdução e adoção de Linux muito mais fácil..


Categorias