The connection breaks because the VPN will change the default route so everything goes into the VPN. You may change that routing table, but it can be tricky to get right, especially if you lose ssh access if things go wrong.
One easy simple solution is to tell your server to reach your own IP address via eth0 by setting a route :
ip route add your_ip_address via the_server's_gateway
and hoping that the VPN script won't touch it.
If you also want to allow other hosts to access the server's original address, that is to say, if you also want your server to both answer his original IP address and the VPN's IP address, you will need to alter how the VPN changes your route, or at least know how it changes them to workaround what it does.
Basically, what you want is policy routing. You will have two routing table: one will use the VPN, and the other will not use it.
If the VPN script will only modify the
main table, then you can add another routing table to be used for the original IP address.
So basically, before launching the VPN, you duplicate the
main's content into another table, for example
table 2 (2 is an arbitrary number here, see /etc/iproute2/rt_tables to define a name alias):
ip route add (network)/(prefixlen) dev eth0 src (address) table 2
ip route add default via (gateway) dev eth0 src (address) table 2
Now add a rule to use that table if your server is accessed by its original IP address from the
ip rule add to (address) iif eth0 table 2
Then you launch your VPN script.
In theory, you should run
ip rule add before adding the default route to your second table because otherwise, the kernel will reject this rule, saying that it can't route to the gateway. but in your case it will just work fine as
main can already route to the gateway.