Eu acho que na sua configuração o sshpass no ProxyCommand tenta dar a senha para a conexão SSH indo para bastion , não para a que vai finalmente para o switch. Colocar o sshpass fora o ssh ProxyCommand externo parece funcionar:
laptop$ export SSHPASS=sshhhh
laptop$ sshpass -e ssh -o'Proxycommand ssh customer@bastion -W final.target.switch:22' blah@blah
Como sshpass coloca o cliente SSH em um tty separado para enganá-lo e aceitar a senha de si mesmo, parece que sshpass deve ser executado antes do cliente SSH. Portanto, ter ssh run sshpass de ssh/config provavelmente não funcionará.
Mas deve ser possível fazer um script para executar sshpass e ssh com as opções necessárias. Isso funciona para mim, com a configuração necessária definida em ~/.ssh/config , como você tinha:
#/bin/bash
if [ -z "$1" ] ; then echo "usage: $0 <args...>" ; exit 1 ; fi
sshpass -e ssh "$@"
Você também pode definir o usuário para efetuar login em .ssh/config , por isso pode ser capaz de fazer sem -l . Além disso, parece que sshpass não lida bem com ssh perguntando sobre chaves de host desconhecidas, portanto, pode ser necessário configurar known_hosts (ou usar StrictHostKeyChecking no ).