在GNU Parallel中执行SCP

4

我需要同时运行一些命令,其中包括SCP。为此,我使用GNU Parallel。问题是我不知道如何将密码传递给SCP。以下是类似于我正在运行的命令行:

ls 2011_* | parallel scp {} user@domain

如果ls找到3个文件,scp会同时询问3次密码,但我只能输入密码到最后一个提示它的进程中。我临时使用了公钥连接来解决这个问题,但由于公司政策的原因,这不会是未来的选择。我阅读了SCP手册,但没有找到选项,但我相信Parallel应该有一个选项可以允许我输入密码。是否有人知道解决这个问题的方法?编辑:我想知道是否有一种方式可以告诉parallel密码,以便每次scp要求密码时都可以提供它。也许是通过类似以下方式实现的:
ls 2011_* | parallel scp {} user@domain < file_with_password.txt

在指定 STDIN 的重定向时,需要明确是针对 scp 而不是 lsparallel

2个回答

4

你需要关注ssh-agent:既可以保护证书密码又可以只需输入一次密码的便利性。

如果你安装了sshpass,那么GNU Parallel版本>=20220322支持这种语法:

parallel -S user:password@server ...

2
parallel sshpass -p $PASS scp -P $PORT -rp {} ~/to_dir ::: $ADDRESS:~/from_dir/*

1
并行 sshpass -p $PASS scp -P $PORT -rp {} /to_dir ::: $ADDRESS:/from_dir/* - Jordan
3
欢迎来到 Stack Overflow! 尽管这段代码可能回答了问题,但最好包括一些上下文解释它是如何工作的以及何时使用它。仅有代码的回答长期来看并不有用。此外,您可以[编辑]您的答案,无需添加注释来指示它。我已经为您编辑了答案,添加了更改并修复了代码格式(四个空格用于代码突出显示)。 - Benjamin W.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接