No momento, tenho dois controles remotos nos meus repositórios git, um apontando para git quando estou em casa e um apontando para git-ext quando estou fora. Quero simplificar isso. A configuração ssh abaixo funciona com git e git-ext (observe que a declaração match está comentada). Se eu descomentei o bloco match, pelo que posso dizer, não há nenhuma mudança no comportamento do bloco git. Quando estou em casa, funciona, quando estou fora, não.
Não importa se eu uso exec ou !exec. Aparentemente nada muda. Não tenho certeza do que está acontecendo, mas eu diria que o exec não está realmente em execução. Qualquer ajuda seria apreciada.
Isso está sendo executado no Windows WSL2, Debian 11, OpenSSH_8.4p1. Embora eu tenha tentado no meu laptop Linux executando Debian 12 também, com os mesmos resultados.
host git
hostname 192.168.1.10
user git
identityfile ~/.ssh/id_rsa_git
#match host git !exec "/usr/bin/ping -c1 192.168.1.1"
# proxyjump bastion
host example.com
hostname example.com
user user
identityfile ~/.ssh/id_rsa_cloud
host bastion
hostname 192.168.1.5
user jump
identityfile ~/.ssh/id_rsa_bastion
proxyjump example.com
host git-ext
hostname 192.168.1.10
user git
identityfile ~/.ssh/id_rsa_git
proxyjump bastion
Eu encontrei o problema.
Aqui, estou usando "git" como um alias 192.168.1.10 no próprio arquivo de configuração. O "host" na linha de correspondência se refere ao host real ao qual o processo ssh se conectará, no caso 192.168.1.10. Então, depois que alterei o git para 192.168.1.10, finalmente pude ver o ping sendo executado ao usar o modo verbose. Eu precisava alterar assim: