带花括号的 SCP 的重新认证行为

带花括号的 SCP 的重新认证行为

我在服务器上有以下文件:

A_Hello.txt
B_Hello.txt
C_Hello.txt
A_World.txt
B_World.txt
C_World.txt
A_SU.txt
B_SU.txt
C_SU.txt
A_IDONTWANTTHISFILE.txt

如果我尝试下载所需的文件(除最后一个之外的所有文件):

scp 我@服务器:/path/to/*_{Hello,World,SU}.txt

每次转换花括号内的单词时,系统都会要求我输入密码,因此:

  1. 我执行命令并输入我的服务器密码
  2. 前 3 个文件被下载
  3. 我被要求输入密码
  4. 接下来下载 3 个文件
  5. 我被要求输入密码...等等

这是什么原因造成的?我该如何消除?

答案1

原因是什么

bash 扩展就是答案。您的命令

scp me@server:/path/to/*_{Hello,World,SU}.txt

扩展为

scp me@server:/path/to/*_Hello.txt me@server:/path/to/*_World.txt me@server:/path/to/*_SU.txt

在您的 中bash,这意味着您向同一台服务器发出三个单独的连接。

我怎样才能摆脱它?

这个要看情况。还有很多可能性。

  • 设置 ControlMaster 以便您可以通过同一连接发出所有命令:

    创造~/.ssh/config

    Host server
    ControlPath ~/.ssh/%r@%h:%p
    ControlMaster auto
    ControlPersist 5m
    

    然后运行你最喜欢的命令:

    scp me@server:/path/to/*_{Hello,World,SU}.txt
    
  • 与批处理文件一起使用sftp,在更复杂的情况下提供更大的灵活性:

    sftp -b <( echo get /path/to/*_{Hello,World,SU}.txt ) me@server
    

相关内容