Code

Register Client to Selenium Hub

using (var client = new SshClient(<Open Vpn Server Public IP>, <username>, <privtae key file path>))
{
   client.Connect();
   client.RunCommand("java -Dwebdriver.chrome.driver=/usr/bin/chromedriver -jar <Replace java selenium server jar file path> -role hub -host  <Open Vpn Ip Address> -port <Open Vpn Ip HUB Port> ");
   client.Disconnect();
}

Un-Register the Client from Selenium Hub

client.Connect();
var pid = "0";
var Result = client.RunCommand("ps -eaf");
var processToKill = "java -Dwebdriver.chrome.driver=/usr/bin/chromedriver -jar <Replace java selenium server jar file path> -role hub -host <Open Vpn Ip Address>";
foreach (var item in Result.Result.Split('\n'))
{
   if (item.Contains(processToKill))
    {
       //hardcoding has 2nd column will be always PID
       string[] commands = item.Split(' ');
       pid = commands[1];
       break;
    }
}
client.RunCommand("kill " + pid);

Testing Script

//Define Chrome driver options here other browser options can also be used.

ChromeOptions options = new ChromeOptions();
options.AddArgument("--start-maximized");

// Instantiate Remote WebDriver (Specify the open vpn server ip along with hub open port)

IWebDriver driver= new RemoteWebDriver(new Uri("http://<Hub IP Address>: Hub Port/wd/hub"), options.ToCapabilities(), TimeSpan.FromSeconds(600));
driver.Navigate().GoToUrl("https://portal.azure.com/");