Estou usando o recurso "Match...exec" da configuração do OpenSSH para conectar-me condicionalmente a instâncias do AWS EC2 por meio de um túnel. Tenho desenvolvido https://gist.github.com/Maks3w/de72b0160d5e6af958adc42eab014624; Eu tenho algo assim:
Match host i-* exec "aws-proxy.sh %r %h ~/.ssh/aws-proxy.%h.%r"
IdentityFile ~/.ssh/aws-proxy.%h.%r
ProxyCommand aws ec2-instance-connect open-tunnel --instance-id %h
# Remove ephemeral key
PermitLocalCommand yes
LocalCommand rm ~/.ssh/aws-proxy.%h.%r*
Isso funciona bem para ssh
não para scp
. Em particular, a última linha nunca é chamada ao usar scp
. Tentei chamar um script em vez de chamar rm
diretamente, para facilitar a depuração, mas o script também nunca é executado. Parece que as declarações param de ser executadas ao usar scp
. Para ser claro, as duas primeiras diretivas funcionam bem scp
e, portanto, scp
funcionam, mas o código de limpeza nunca é chamado. Enquanto isso, tudo funciona bem com ssh
. Alguma ideia?
- Tentei o modo detalhado, mas não há saída para indicar por que as declarações param de ser executadas.
- Tentei chamar um script em vez de
rm
diretamente, mas o script também nunca foi chamado. - Comecei a escrever um script de wrapper, mas percebi que escrever um wrapper
scp
seria um esforço decente, então pensei em pedir ajuda primeiro...
EDIT: Acabei escrevendo um script wrapper para isso. É menos flexível, mas faz o trabalho que preciso.
A página de manual correspondente
man scp
não listaPermitLocalCommand
nemLocalCommand
opções de configuração suportadas.scp
é um aplicativo de cópia segura projetado de acordo com a filosofia Unix: ele faz um trabalho e o faz bem. Então, se você quiser ter outras ações além de copiar, você tem que escrever um "script wrapper" que possa ter quaisquer comandos locais independentemente da chamada para oscp
, e até mesmo usar condições (por exemplo, para nunca remover o arquivo local se a cópia foi fracassado).Acho que encontrei a resposta real, ou pelo menos a mais direta.
man ssh_config
diz:Ou seja,
LocalCommand
aplica-se apenas assh
.