Using SSH in Go to automate remote changes
SSH is simply a network protocol that can be used to secure communication between two hosts.
While most people think that the ssh
binary allows you to connect from a terminal on one host to a terminal on another host, that is only one use. SSH can be used to secure connections for services such as Google Remote Procedure Call (gRPC) or to tunnel graphical interfaces such as the X Window System (X11).
In this section, we will talk about how you can use the SSH package (https://pkg.go.dev/golang.org/x/crypto/ssh) for creating clients and servers.
Connecting to another system
The most basic use of SSH is to connect to another system and either send a single command or invoke a shell and issue commands. SSH is simply a transport mechanism, so there are many other uses of SSH such as connection tunneling or wrapping remote procedure calls (RPCs). We will not cover those here, as they are outside the use cases for general DevOps work...