Gibt es eine Möglichkeit, Dateien mit SCP und Datei-/Passwortabfrage an die Server A und B zu senden?

Gibt es eine Möglichkeit, Dateien mit SCP und Datei-/Passwortabfrage an die Server A und B zu senden?

Szenario: Server: A, B und C (alle Linux)

Datei:File.txt

Jetzt muss ich die Datei mithilfe von SCP von Server A an B&C senden, aber ich muss das Kennwort und den Dateinamen nur einmal eingeben.

Sie müssen wissen, wie Sie das erreichen.

Habe es versucht sshpass, aber es scheint, als sei es nicht installiert und ich kann es nicht installieren :(

sshpass:command not found

Verwendeter Code: (Hier muss jedes Mal das Passwort eingegeben werden)

#!/bin/bash

echo "Enter Package Name:\c"

read package

package1="$package"

echo

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

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

Antwort1

Sie können die „Passwort“-Anforderung folgendermaßen entfernen. Geben Sie auf dem PC mit der Datei (Server A) in einem Terminal Folgendes ein:

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.

Anschließend müssen Sie auf Server B und C kopieren /<user>/.ssh/id_rsa.pub. Gehen Sie auf Server B und C wie folgt vor. HINWEIS: Dies mkdir -p ~/.sshist möglicherweise nicht erforderlich.

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

Jetzt können Sie sich ohne Passwort von Server A zu B und C verbinden. Ihr Skript wäre jetzt beispielsweise so einfach wie (mit einer einfachen Dateiprüfung):

#!/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

verwandte Informationen