Na máquina A:
ssh -L 3307:C:3306 user@B
Isto alocou um soquete para escutar a porta 3307 em A. E sempre que uma conexão é feita a esta porta, é encaminhada sobre o túnel ssh para C: 3306.
Você pode se conectar ao servidor MySQL no C com:
mysql -u <user> -p -h 127.0.0.1 -P 3307
(127.0.0.1 para conectar via TCP / IP ao invés de um socket)
No, I cannot connect to MySQL on C from B. Only SSH listening on 21343 is open to B.
Se o firewall em C só permitir conectar-se do host local, algo assim:
iptables -A INPUT -p tcp -s 127.0.0.1 --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP
então, AFAIK, não há como fazer isso. Se você tentar se conectar ao túnel ssh, receberá os erros abaixo:
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0