Introdução de uma senha em um script para o rsync fazer login em um servidor remoto para concluir o rsync

1

Estou tentando fazer um arquivo .sh que um cronjob executa ocasionalmente que faz um rsync automático. É assim que meu arquivo parece até agora:

#!/bin/bash

subdir='hostname'

rsync -ah -e 'ssh -p 48180' /home/user/test 
[email protected]:/var/www/html/xgplayer/events/"$subdir" -y

Esse é um comando, teve que cortá-lo pela metade porque era muito longo para uma linha.

Eu tenho que definir para criar um subdiretório baseado fora do hostname da máquina (por favor me diga se isso parece bom também, eu estou baseando o código off usado para um propósito ligeiramente diferente) que esse usuário tem acesso a . (Eu apenas chamei o usuário usuário por razões, ignore isso)

Qual é a minha pergunta: será que eles automaticamente concordam em armazenar uma chave ssh como se eu estivesse tentando fazer isso? Além disso, como faço para que ele insira automaticamente uma senha através do comando que estou tentando executar no ssh quando ele tenta se logar como esse usuário para rsync os arquivos? Eu pensei que havia algo como - isso poderia fazer isso. Qualquer ajuda seria apreciada:)

Estou executando o Ubuntu Server 16.04 LTS em ambas as máquinas, se isso ajudar.

Editar: Para não ser super complicado, mas qualquer que seja a solução também tem que ser capaz de ser colocado em um arquivo .sh e rodar sem a entrada do usuário, isso é para uma tarefa muito específica, desculpe.

Editar 2: Fazendo isso como por solicitação de alguém me ajudando, então, infelizmente não posso fornecer capturas de tela, mas ele pede uma senha para um usuário no 10.3.10.110 sempre que eu executar o comando rsync que listei, e sempre que eu executo o ssh-keygen em um novo cliente tentando gerar uma chave para esse usuário nessa máquina. O aplicativo para o qual estou tentando usar requer que isso seja totalmente automatizado, e é por isso que isso é um problema.

Editar 2.5: Depois de executar o keygen e o ssh-copy-id, ele não solicita mais uma senha no rsync, mas isso será implementado em muitas máquinas e, para este projeto, não me importo em colocar aqueles em algum tipo de arquivo .sh de configuração, mas esses comandos requerem entradas que precisariam ser automatizadas para que eu usasse no meu caso específico.

Editar 3: Estou comentando muito porque não tenho representante suficiente para bater papo diretamente com as pessoas que tentam me ajudar, novas para este site ainda.

    
por tommy61157 07.06.2018 / 16:43

2 respostas

1

Eu encontrei minha própria resposta fazendo mais algumas investigações, vou postar a resposta de como isso pode ser completamente automatizado, juntamente com alguns links úteis que me ajudaram a chegar a este ponto:

#!/bin/bash


subdir='hostname'

rsync -ah -e 'sshpass -p "password" ssh -p 48180 -o 
StrictHostKeyChecking=no' /var/www/html/xgplayer/events 
[email protected]:/var/www/html/xgplayer/events/"$subdir" 

Esse comando Rsync é todo um comando. Os links que ajudaram:

link link (A segunda resposta, mais votada, acabou sendo mais útil do que a " melhor "resposta)

Além disso, obviamente, troque usuário e senha com seu usuário e senha quando necessário, não os postando aqui obviamente.

Obrigado a todos que tentaram ajudar, vocês ajudaram a me direcionar na direção certa para a maior parte! :)

    
por tommy61157 08.06.2018 / 14:53
1

Use a opção: --password-file=rsync_pass

rsync -ah -e 'ssh -p 48180' --password-file=rsync_pass /home/user/test [email protected]:/var/www/html/xgplayer/events/"$subdir" -y

O arquivo rsync_pass contém a senha do usuário.

    
por MatsK 08.06.2018 / 10:44