Saludos estoy haciendo un script para automatizar el envío de claves públicas pero no puedo enviar mi archivo o variable por ssh ya sea por «echo o cat»
Respuesta1
Si desea enviar un archivo a un servidor remoto, puede utilizar scp
.
Del hombre scp:
scp copia archivos entre hosts en una red. Utiliza ssh(1) para la transferencia de datos, utiliza la misma autenticación y proporciona la misma seguridad que ssh(1). A diferencia de rcp(1), scp solicitará contraseñas o frases de contraseña si son necesarias para la autenticación.
Uso básico:
scp user@origin:/path/to/file user@target:/path/to/file
Suponiendo que desea transferir ejemplo.txt desde el directorio actual a un control remoto SERVER
con el mismo nombre en una carpeta llamada ejemplo autenticándose como raíz:
scp example.txt root@SERVER:/example/example.txt
Respuesta2
Para transferir claves públicas a servidores remotos, existe una utilidad dedicada para ello.ssh-copia-id.
Encontrará arriba un script que puede utilizar para automatizar esta tarea:
#!/bin/sh
while read server ; do
timeout 10 ssh-copy-id -i <public_key_path> <user>@$server
done < <list_of_servers.txt>
PD: Reemplace las constantes entre <> por sus propios valores.
Respuesta3
Puede usarlo sshpass
en su secuencia de comandos para acceder al servidor sin ingresar la contraseña cada vez, como:
sshpass -p 'PASSWORD' ssh USER@SERVER ssh-copy-id USER@SERVER
También puedes usar -f
para escribir la contraseña en un archivo si no quieres escribirla en la línea de comando (está en texto sin cifrar en ambos casos) para obtener una lista de servidores llamada servers.list
for SERVER in $(cat servers.list)
do
sshpass -p 'PASSWORD' ssh USER@$SERVER ssh-copy-id USER@$SERVER
done