Убрать запрос "пароль" можно следующим образом. На компьютере с файлом (сервер 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.
Затем нужно скопировать /
на сервер B и C. На сервере 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