Cualquier forma de enviar un archivo del servidor A al B&C usando scp con solicitud de archivo/contraseña

Cualquier forma de enviar un archivo del servidor A al B&C usando scp con solicitud de archivo/contraseña

Escenario: Servidores: A, B y C (Todo Linux)

Archivo:Archivo.txt

Ahora necesito enviar el archivo desde el servidor A a B&C usando SCP pero tengo que ingresar la contraseña y el nombre del archivo solo una vez.

Hay que saber cómo lograrlo.

Lo intenté sshpasspero parece que no está instalado y no puedo instalarlo :(

sshpass:command not found

Código usado: (aquí debe ingresar la contraseña cada vez)

#!/bin/bash

echo "Enter Package Name:\c"

read package

package1="$package"

echo

scp ${package1} User@ServerB:/tmp/

scp ${package1} User@ServerC:/tmp/

Respuesta1

Puede eliminar la solicitud de "contraseña" así. En la PC con el archivo (Servidor A), en una terminal tipo:

ssh-keygen -t rsa -b 2048
Enter file in which to save the key (/<user>/.ssh/id_rsa): [Hit Enter]
Enter passphrase (empty for no passphrase): [Hit Enter]
Enter same passphrase again: [Hit Enter]
Your identification has been saved in /<user>/.ssh/id_rsa.
Your public key has been saved in /<user>/.ssh/id_rsa.pub.

Luego debe copiar /<user>/.ssh/id_rsa.pubal Servidor B y C. En el Servidor B y C, haga lo siguiente. NOTA: Es mkdir -p ~/.sshposible que no sea necesario.

mkdir -p ~/.ssh
cat id_rsa.pub >> ~/.ssh/authorized_keys
rm id_rsa.pub

Ahora puede conectarse desde el servidor A al B y C sin contraseña. Por ejemplo, su secuencia de comandos ahora sería tan simple como (con una verificación de archivo básica):

#!/bin/sh

ask () {
    echo -n "Enter Package Name: "
    read package

    if [ ! -f "$package" ]
    then
        echo "
${package} is not a file. Try again.
"
        ask
    else 
        upload "$package"
    fi
}

upload () {
    echo "put \"$1\" \"/tmp/$1\" > sftp.cmd
    sftp User@serverB < sftp.cmd
    sftp User@serverC < sftp.cmd
    rm -f sftp.cmd  
}

ask
exit

información relacionada