Eu dividi minha resposta em duas respostas separadas para que você possa fazer um up / downvote das abordagens "wrapper" e "patch" separadamente.
Solução 1: escreva uma função de wrapper
ssh ()
{
controlpath=""
for argument in $@
do
if [[ "$argument" = "-"*"4"* ]]
then
controlpath="~/.ssh/tmp/%l_%r@%h:%p.inet"
fi
if [[ "$argument" = "-"*"6"* ]]
then
controlpath="~/.ssh/tmp/%l_%r@%h:%p.inet6"
fi
done
if [ -n "$controlpath" ]
then
/usr/bin/ssh -o "ControlPath=$controlpath" $@
else
/usr/bin/ssh $@
fi
}
Esta função de invólucro instruirá ssh
a criar soquetes de controle separados para ssh host
, ssh -4 host
e ssh -6 host
.
Ele pode não analisar algo como ssh -464466 host
corretamente (mesmo que isso seja tecnicamente permitido), mas deve ser a solução mais fácil para cenários simples.