使用帶有檔案/密碼提示的 scp 將檔案傳送到 A 到 B&C 伺服器的任何方法

使用帶有檔案/密碼提示的 scp 將檔案傳送到 A 到 B&C 伺服器的任何方法

場景:伺服器:A、B 和 C(全部 linux)

文件:文件.txt

現在我需要使用 SCP 將檔案從伺服器 A 發送到 B&C,但我只需輸入密碼和檔案名稱一次。

需要知道如何實現它。

嘗試過sshpass,但似乎未安裝,我無法安裝它:(

sshpass:command not found

使用的密碼:(這裡每次都需要輸入密碼)

#!/bin/bash

echo "Enter Package Name:\c"

read package

package1="$package"

echo

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

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

答案1

您可以像這樣刪除“密碼”請求。在包含該檔案的 PC(伺服器 A)上,在終端機中鍵入:

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.

然後您需要複製/<user>/.ssh/id_rsa.pub到伺服器B和C。注意:mkdir -p ~/.ssh可能不需要。

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

現在您無需密碼即可從伺服器 A 連線到 B 和 C。例如,您的腳本現在將非常簡單(透過基本文件檢查):

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

相關內容