Saudações estou fazendo um script para automatizar o envio de chaves públicas mas não consigo enviar meu arquivo ou variável via ssh seja por "echo ou cat"
Responder1
Se quiser enviar um arquivo para um servidor remoto, você pode usar scp
.
Do homem scp:
scp copia arquivos entre hosts em uma rede. Ele usa ssh(1) para transferência de dados, usa a mesma autenticação e fornece a mesma segurança que ssh(1). Ao contrário do rcp(1), o scp solicitará senhas ou frases secretas se forem necessárias para autenticação.
Uso básico:
scp user@origin:/path/to/file user@target:/path/to/file
Supondo que você queira transferir example.txt do diretório atual para um controle remoto SERVER
com o mesmo nome em uma pasta chamada exemplo autenticando como root:
scp example.txt root@SERVER:/example/example.txt
Responder2
Para transferir chaves públicas para servidores remotos, existe um utilitário dedicado para issossh-cópia-id.
Você encontrará acima um script que pode usar para automatizar esta tarefa:
#!/bin/sh
while read server ; do
timeout 10 ssh-copy-id -i <public_key_path> <user>@$server
done < <list_of_servers.txt>
PS: Substitua as constantes entre <> pelos seus próprios valores.
Responder3
Você pode usar sshpass
em seu script para acessar o servidor sem digitar a senha todas as vezes como:
sshpass -p 'PASSWORD' ssh USER@SERVER ssh-copy-id USER@SERVER
você também pode usar -f
para escrever a senha em um arquivo se não quiser escrevê-la na linha de comando (está em texto não criptografado em ambos os casos) para uma lista de servidores chamada servidores.list
for SERVER in $(cat servers.list)
do
sshpass -p 'PASSWORD' ssh USER@$SERVER ssh-copy-id USER@$SERVER
done