Questão Comportamento de reautenticação do SCP com chaves


Eu tenho os seguintes arquivos em um servidor:

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

Se eu tentar baixar os arquivos desejados (todos, exceto o último):

scp me @ server: / caminho / para / * _ {Olá, Mundo, SU} .txt

Eu recebo minha senha para cada transição da palavra nas chaves, então:

  1. Eu executo o comando e insiro a senha do meu servidor
  2. Os primeiros 3 arquivos são baixados
  3. Eu fui perguntado pela minha senha
  4. Os próximos 3 arquivos são baixados
  5. Eu pedi minha senha .... etc

Qual é a causa e como posso me livrar disso?


1


origem




Respostas:


Qual é a causa

A expansão do bash é a resposta. Seu comando

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

se expande para

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

na tua bash, o que significa que você emite três conexões separadas para o mesmo servidor.

Como posso me livrar disso?

Isso depende. Existem mais possibilidades.

  • Configure o ControlMaster para que você emita todos os comandos na mesma conexão:

    crio ~/.ssh/config

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

    e, em seguida, execute o seu comando favorito:

    scp me@server:/path/to/*_{Hello,World,SU}.txt
    
  • Usar sftp com arquivo em lote, que fornece mais flexibilidade em casos mais complexos:

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

1