Bash scp几个文件密码问题

Bash scp几个文件密码问题,bash,scp,remote-server,Bash,Scp,Remote Server,我正在尝试使用scp将几个文件从远程服务器复制到Bash的本地驱动器中。 这是代码的一部分 scp -r -q $USR@$IP:/home/file1.txt $PWD scp -r -q $USR@$IP:/home/file2.txt $PWD scp -r -q $USR@$IP:/root/file3.txt $PWD 然而,问题是,每次它想要复制一个文件时,它都会不断询问服务器的密码,这是相同的。我希望它只询问一次,然后复制我的所有文件 请不要建议rsync,也不要创建密钥身份验证

我正在尝试使用scp将几个文件从远程服务器复制到Bash的本地驱动器中。 这是代码的一部分

scp -r -q $USR@$IP:/home/file1.txt $PWD
scp -r -q $USR@$IP:/home/file2.txt $PWD
scp -r -q $USR@$IP:/root/file3.txt $PWD
然而,问题是,每次它想要复制一个文件时,它都会不断询问服务器的密码,这是相同的。我希望它只询问一次,然后复制我的所有文件

请不要建议rsync,也不要创建密钥身份验证文件,因为我不想这样做。 还有其他方法吗。。。?
任何帮助都将不胜感激

您可以使用
expect
脚本或
sshpass

sshpass-p“密码”scp…

#!/usr/bin/expect -f
spawn scp ...
expect "password:"
send "ur_password"

一个缺点是您的密码现在是纯文本的

我假设,如果您可以从远程服务器创建scp文件,您也可以通过ssh连接并创建远程文件的tarball

-r标志是递归的,用于复制整个目录,但在命令中列出不同的文件,因此-r变得多余

在远程系统上的bash shell中尝试以下操作:

$ mkdir /home/file_mover
$ cp /home/file1.txt /home/file_mover/
$ cp /home/file2.txt /home/file_mover/
$ cp /root/file3.txt /home/file_mover/

$ tar -cvf /home/myTarball.tar /home/file_mover/

$ scp -q $USR@$IP:/home/myTarball.tar  $PWD                

在这种情况下,你可以写

scp -q $USR@$IP:/home/file[1-3].txt $PWD

为什么您不想使用适用于大多数SSH/SCP用户的通用解决方案?如何:SCP-r-q$USR@$IP:/home/file*.txt$PWD@michael如果你看到第三个在家里,不是所有的人都在家里/root@NickC什么意思?@Matin SSH密钥适用于大多数用户。你说“我不想那样做”。为什么不呢?这是问题的重要信息。谢谢你的回答。但是这个脚本是为了工作,我认为他们没有安装“expect”或“sshpass”。Bash不识别expect或spawn。这个脚本将在不同的地方运行,所以我不能只在我的linux上安装它。spawn是一个expect命令,您可以安装/编译一次(expect/sshpass),然后将二进制文件与脚本一起复制。您可以重新措辞吗?您可以下载expect/sshpass源代码,在您自己的机器上编译它,然后将该二进制文件与脚本一起复制以使用它。谢谢您的帮助,但我无法在远程服务器中创建文件或文件夹。我只能读谢谢,但如果你注意的话,其中一个文件不在家里。而且并非所有文件都在同一路径上