You can do it by advanced routing as suggested, but it's not that simple.
The simplest solution to achieve your goal is to route packages addressing your (home) IP address differently. It's always good idea to restrict ssh access to several safe IP addresses. For example you can do:
ip route add 1.1.1.1 via 9.9.9.9
Here 1.1.1.1 is your home ip address, and 9.9.9.9 is some default gateway already reachable in the routing table. Now all packages from your machine to the external IP will come back the same way. You can route everything else over the VPN as normal. You can even add this route in the openvpn config file. Everything is super.
However it's not so super if your home IP is changing (aka dynamic address) or you have to reach your machine from random addresses (multiple users, traveling). That case you must go on the hard way.
Please notice if you don't do anything, the ssh packages will arrive at your external interface (and ip), but they can not find the way back if you route them over the VPN (actually they could depending on your VPN settings, but the source IP will be different and the package will be dropped). Your goal is to redirect some outgoing packages to the external interface and some to the VPN. This is the problem.
Create an alternative routing table :
echo "100 secure" >> /etc/iproute2/rt_tables
Populate and control routing:
# route ssh over external iface eth0 to router 9.9.9.9
ip route add default via 9.9.9.9 dev eth0 table secure
# send all packages with fwmark 1 to the secondary routing table
ip rule add fwmark 0x1 table secure
# Mark outgoing ssh packages with the mark 1
iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-mark 1
Here we will mark all outgoing ssh packages, then redirect all marked packages over the alternative routing. Of course, now you won't to be able to ssh over your vpn because all answer would be redirected to an another interface. The point is, you can create arbitrarily complex iptables rules and route them differently by using set-mark.
Fortunately we have a thing called CONNMARK which (utilizing the connection tracking feature of the kernel) can mark entire connections back and forth (you will need the xt_connmark module).
# mark incoming ssh *connection* with 1. Here eth0 is your external interface
iptables -A INPUT -m state --state NEW -i eth0 -p tcp --dport 22 -t mangle -j CONNMARK --set-mark 1
# restore connection mark (e.g. mark the packages)
iptables -A OUTPUT -t mangle -j CONNMARK --restore-mark
# send all packages with fwmark 1 to the secondary routing table as before..
ip rule add fwmark 0x1 table secure
Please use the above according to your current setup after understanding the concepts and do not just copy paste.
Edit: From the client's perspective
If you are using your VPN from the same machine where your are made the ssh connection from, an additional problem emerges.
By default the VPN peer is made the default gateway. It can easily break your existing connection, since your ssh packages will be routed over the VPN channel (the server will get them from the tun or tap interface and not from the physical eth interface). Easy solution is not including the default-gateway option in the client side configuration (or don't push it). Push only the preferred subnets' route. Warning: if you made the VPN to hide your (home) public address, this may not be what you want!