Recently I was trying to build a server management tool. That I need to connect to my server (Ubuntu) programmatically.

I usually access my server via SSH, as a normal human. So I wanna do it with the same approach.

First, create a new .NET Core project with:

dotnet new console

After creating the new project, install the latest SSH.NET library.

Reference: NuGet Gallery | SSH.NET 2020.0.1

And write the following code:

using Renci.SshNet;
using System;
using System.Threading.Tasks;

namespace SSHTest
    class Program
        async static Task Main(string[] args)
            using (var client = new SshClient("ip-or-hostname", "your-username", "your-password"))
                var command = client.RunCommand("apt upgrade");

And try to run your app. It gonna automatically connect to your remote server and run the command: apt upgrade.

The library has much better usage. Check it's doc here: sshnet/SSH.NET: SSH.NET is a Secure Shell (SSH) library for .NET, optimized for parallelism. (