我正在将 bash 脚本rsync
从远程主机写入我的个人计算机中的多个文件。
到目前为止我写的内容是有效的,一个rsync
命令接一个命令(总共三个),尽管我必须在每次执行后输入我的 ssh 密码rsync
#!/bin/bash
# create the command line argument, that will be PASSED when calling the script
while getopts r: option
do
case "${option}"
in
r) RUNNAME=${OPTARG};;
esac
done
# create the directory on the Toshiba hard Drive
mkdir -p /media/user/TOSHIBA\ EXT/novaseq/$RUNNAME/InterOp
mkdir -p /media/user/TOSHIBA\ EXT/novaseq/$RUNNAME/Unaligned/Stats
# rsync the files into the "base directory"
# the files that have to be rsynced have the extension .csv, .txt and .xml
rsync -avzh user@remote-host:/nexusb/Novaseq/$RUNNAME/*.* /media/user/TOSHIBA\ EXT/novaseq/$RUNNAME/ && rsync -avzh user@remote-host:/nexusb/Novaseq/$RUNNAME/InterOp/*.bin /media/user/TOSHIBA\ EXT/novaseq/$RUNNAME/InterOp && rsync -avzh user@remote-host:/nexusb/Novaseq/$RUNNAME/Unaligned/Stats/*.* /media/user/TOSHIBA\ EXT/novaseq/$RUNNAME/Unaligned/Stats
有没有办法rsync
只输入ssh密码就可以调用这三个命令一次而不是三次?
答案1
正如@Kusalananda 建议的那样,使用 ssh 代理。由于您已经通过 ssh 登录,因此只需实例化 ssh-agent 来执行脚本就可以正常工作。
eval $(ssh-agent)
ssh-add
您可以将多个 ssh 密钥添加到同一个 ssh-agent。ssh-add
添加位于默认位置的那个。如果您的公钥/私钥对不在默认位置,请将它们添加到 ssh-add 命令中。
如果您在此脚本之外使用 ssh-agent,也可以在登录时启动它。
编辑:我想在远程服务器上的脚本终止后终止 ssh-agent 是一个好主意,尤其是。如果其他人拥有 root 访问权限,则可以读出您的密码。如果您想要一个完全安全的解决方案,请查看本文。