99
The issue is, ssh to public ip or internal ip is working fine. However, this is not working while ssh to wireguard interface ip.
After some research from the internet, I set all wireguard interface MTU to 1380 (for all servers), then restart wireguard, it works now.
Refer
https://www.reddit.com/r/WireGuard/comments/x062j6/only_ssh_not_working_over_wireguard_everything/
https://gist.github.com/nitred/f16850ca48c48c79bf422e90ee5b9d95
http://pandorariver.blogspot.com/2020/03/wireguard-vpn-wireguardopenvpn-push.html