Golang SSH -Beispiele

Golang SSH -Beispiele

Secure Shell oder SSH ist ein sicheres Netzwerkprotokoll, mit dem Remote -Anmeldungen von Geräten in einer sicheren Verbindung ermöglicht werden können. SSH ist in den letzten Jahren eines der nützlichsten und beliebtesten Netzwerkprotokolle.

In diesem Artikel werden wir diskutieren, wie Sie mit dem SSH -Protokoll arbeiten können.

Golang SSH -Paket

In diesem Tutorial werden wir das Crypto/SSH -Paket verwenden. Sie können das Paket als:

Import "Golang.org/x/crypto/ssh "

SSH -Kunde

Wir werden zunächst einen SSH -Client erstellen, der die Adresse eines Remote -SSH -Servers übernimmt und eine Verbindung dazu herstellt.

Betrachten Sie das Codebeispiel wie unten gezeigt:

Paket Main
importieren (
"Protokoll"
"Golang.org/x/crypto/ssh "
"Golang.org/x/crypto/ssh/bekannteHosts "
)
func main ()
// SSH -Konfiguration
HostKeyCallback, ERR: = BekannteHosts.Neu ("/home/debian11/.SSH/Bekannte_Hosts ")
Wenn er irrt != nil
Protokoll.Tödlich (arr)

Konfiguration: = & ssh.Clientconfig
Benutzer: "Ubuntu",
Auth: [] SSH.Authmethod
ssh.Passwort ("Passwort"),
,
HostKeyCallback: HostKeyCallback,

// einen SSH -Server verbinden
conn, arr: = ssh.Zifferblatt ("TCP", "192.168.205.217: 22 ", Konfiguration)
Wenn er irrt != nil
Protokoll.Tödlich (arr)

Verschiebung Conn.Schließen()

Im vorherigen Code -Beispiel beginnen wir mit dem Importieren der erforderlichen Module. Wir importieren die Crypto/SSH- und Crypto/bekannten Hosts, um eine Verbindung zum SSH -Server herzustellen und den Host -Schlüssel zu analysieren.

Wir erstellen dann einen neuen Host -Schlüssel mit den bekannten Hosts.New () Methode. Die Funktion gibt einen Host -Schlüssel -Rückruf aus den angegebenen Host -Tastendateien zurück.

Als nächstes erstellen wir config, um sich beim Server anzumelden. Dies ist eine Strukturinformationen wie Benutzer- und Auth -Methode.

Der letzte Schritt besteht darin, die Verbindung zum Server mit dem SSH zu wählen.Dial () Methode.

Sitzung erstellen

Wir können eine Sitzung mit der Nachrichtenmethode erstellen. Ein Code -Beispielcode ist wie unten gezeigt:

Sitzung, err: = conn.Neue Sitzung()
Wenn er irrt != nil
Protokoll.Tödlich (arr)

Verschiebung der Sitzung.Schließen()

Anfordern pty

Betrachten Sie das unten angegebene Code -Beispiel:

// Terminalmodus konfigurieren
Modi: = ssh.Terminalmodes
ssh.Echo: 0, // Supress Echo

// Terminalsitzung ausführen
Wenn ERR: = Sitzung.RequestPty ("Xterm", 50, 80, Modi); irren != nil
Protokoll.Tödlich (arr)

// Remote -Shell starten
Wenn ERR: = Sitzung.Hülse(); irren != nil
Protokoll.Tödlich (arr)

Im vorherigen Beispiel konfigurieren wir die Terminalmodi. Obwohl Sie die Standardparameter verwenden können, setzen wir in diesem Beispiel die SSH.Echowert auf 0. Dies verhindert, dass die Shell Befehle an Sie zurückgeht.

Als nächstes fordern wir eine Terminalsitzung mit der RequestPty () -Methode an. Dies nimmt den Begriff als Zeichenfolge und die Höhe und Breite der Terminalsitzung als Ganzzahlen und den Terminalkonfigurationsmodus an.

Führen Sie den Befehl aus

Sie können einen einzelnen Befehl auf dem Server ausführen, sobald eine Sitzung festgelegt ist. Zum Beispiel:

var buff bytes.Puffer
Sitzung.Stdout = & buff
Wenn ERR: = Sitzung.Run ("ls -la"); irren != nil
Protokoll.Tödlich (arr)

fmt.Println (Buff.String ())

Im vorherigen Beispiel verwenden wir die Auslauffunktion, um einen Befehl auf dem Server auszuführen.

Ein Ausgabebeispiel ist unten dargestellt:

Abschluss

Dieser Leitfaden deckt die Grundlagen der Arbeit mit dem SSH -Paket in der Go -Programmiersprache ab. Darüber hinaus wurde das Erstellen einer Sitzung mithilfe der Nachrichtenmethode, die Anforderung einer Terminalsitzung mithilfe der RequestPty () -Methode und der Verwendung des Laufbefehls erörtert. Wir hoffen, Sie haben diesen Artikel hilfreich gefunden. Weitere Tipps und Informationen finden Sie in anderen Linux -Hinweisartikeln.