Script de backup

Iniciado por pentestbox, 24 de Maio de 2016, 14:46

tópico anterior - próximo tópico

pentestbox

Ola pessoal, preciso criar um script(shell script) que permita fazer backup de todo o conteúdo de um diretório do meu sistema para um sistema remoto, sei que da pra fazer isso seja via rsync ou scp, eu consigo fazer isso direto na linha de comando, a minha duvida será na hora de rodar o script e pedir a senha da maquina remota, tem alguma maneira de ja adicionar a senha do host remoto no script para que não seja pedido, e o backup seja feito automaticamente?

Desde já agradeço.

selvaking

Não é interessante vc adicionar uma senha ao seu script por razões muito óbvias.

Mas vc pode se utilizar de chaves criptográficas do SSH.

Vamos supor que vc esta na máquina que deseja fazer o backup, vamos chama-la de "machine_local"

user_local@machine_local:~$ ssh-keygen

O comando faz algumas perguntas como:
O nome do novo arquivo para os pares de chave pública/privada.
É mostrado um nome default, mas opcional, que vc pode aceitar dando enter.


Generating public/private rsa key pair.
Enter file in which to save the key (/home/user_local/.ssh/id_rsa):


Se o arquivo já existir é perguntado se vc quer sobrescrevê-lo.
/home/usuario/.ssh/id_rsa already exists.
Overwrite (y/n)?


Se o arquivo não existir é pedido pra vc entrar com uma "Frase Secreta".
Aqui está o pulo do gato. Deixe-a limpa para não usar a "frase secreta", teclando Enter.
Enter passphrase (empty for no passphrase):

É pedido pra digitar a frase novamente. Deixe-a limpa teclando Enter.
Enter same passphrase again:

É gerado dois arquivos (par de chaves - uma privada e outra pública) no seu micro local.
Your identification has been saved in /home/user_local/.ssh/id_rsa.
Your public key has been saved in /home/user_local/.ssh/id_rsa.pub.
The key fingerprint is:
d7:31:43:99:b1:5c:6d:b6:6c:ab:8e:a5:ec:f3:5d:e3 user_local@machine_local
The key's randomart image is:
+--[ RSA 2048]----+
|            o+.. |
|  oooooo  +|
|            * .o.|
|    ooo + |
|        S . . . .|
|         .     . |
|             ....|
|          ..+.o o|
|          .=+o E |
+-----------------+


O arquivo de chave pública deve ser exportado para o micro remoto com o comando:
user_local@machine_local:~$ ssh-copy-id user_remoto@192.168.2.10
Onde 192.168.2.10, usado no exemplo, é o IP da sua máquina remota e a conta "user_remoto" é uma conta válida no micro remoto.

Após isto é só utilizar o comando "ssh IP_machine_remota" para se conectar sem pedir senha.
Ou utilizar o RSYNC num script ou até no próprio crontab para que ele faça o backup sem pedir senha.
Dê-me um computador com o Tux que movo o mundo!

Linux User #323049

pentestbox

Citação de: selvaking online 24 de Maio de 2016, 21:46
Não é interessante vc adicionar uma senha ao seu script por razões muito óbvias.

Mas vc pode se utilizar de chaves criptográficas do SSH.

Vamos supor que vc esta na máquina que deseja fazer o backup, vamos chama-la de "machine_local"

user_local@machine_local:~$ ssh-keygen

O comando faz algumas perguntas como:
O nome do novo arquivo para os pares de chave pública/privada.
É mostrado um nome default, mas opcional, que vc pode aceitar dando enter.


Generating public/private rsa key pair.
Enter file in which to save the key (/home/user_local/.ssh/id_rsa):


Se o arquivo já existir é perguntado se vc quer sobrescrevê-lo.
/home/usuario/.ssh/id_rsa already exists.
Overwrite (y/n)?


Se o arquivo não existir é pedido pra vc entrar com uma "Frase Secreta".
Aqui está o pulo do gato. Deixe-a limpa para não usar a "frase secreta", teclando Enter.
Enter passphrase (empty for no passphrase):

É pedido pra digitar a frase novamente. Deixe-a limpa teclando Enter.
Enter same passphrase again:

É gerado dois arquivos (par de chaves - uma privada e outra pública) no seu micro local.
Your identification has been saved in /home/user_local/.ssh/id_rsa.
Your public key has been saved in /home/user_local/.ssh/id_rsa.pub.
The key fingerprint is:
d7:31:43:99:b1:5c:6d:b6:6c:ab:8e:a5:ec:f3:5d:e3 user_local@machine_local
The key's randomart image is:
+--[ RSA 2048]----+
|            o+.. |
|  oooooo  +|
|            * .o.|
|    ooo + |
|        S . . . .|
|         .     . |
|             ....|
|          ..+.o o|
|          .=+o E |
+-----------------+


O arquivo de chave pública deve ser exportado para o micro remoto com o comando:
user_local@machine_local:~$ ssh-copy-id user_remoto@192.168.2.10
Onde 192.168.2.10, usado no exemplo, é o IP da sua máquina remota e a conta "user_remoto" é uma conta válida no micro remoto.

Após isto é só utilizar o comando "ssh IP_machine_remota" para se conectar sem pedir senha.
Ou utilizar o RSYNC num script ou até no próprio crontab para que ele faça o backup sem pedir senha.

Ok, entendi, mas depois de exportar a chave para a máquina remota, eu devo alterar alguma configuração no arquivo sshd_config dessa máquina para que ela passe a usar a autenticação por chave? ou ela vai passar a fazer isso direto sem precisar configurar nada?

selvaking

Citação de: pentestbox online 25 de Maio de 2016, 14:42
Ok, entendi, mas depois de exportar a chave para a máquina remota, eu devo alterar alguma configuração no arquivo sshd_config dessa máquina para que ela passe a usar a autenticação por chave? ou ela vai passar a fazer isso direto sem precisar configurar nada?

Não é preciso configurar nada.
O arquivo /etc/ssh/sshd_config já vem pré-configurado pra aceitar este tipo de autenticação.
Dê-me um computador com o Tux que movo o mundo!

Linux User #323049