Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung des Golang-SSH-Verbindungsservers (Simulation eines interaktiven Terminals)

Detaillierte Erläuterung des Golang-SSH-Verbindungsservers (Simulation eines interaktiven Terminals)

藏色散人
藏色散人nach vorne
2021-05-24 11:53:434828Durchsuche

Die folgende Tutorial-Kolumne von golang gibt Ihnen eine detaillierte Erklärung der Golang-SSH-Verbindung zum Server (Simulation eines interaktiven Terminals). Ich hoffe, dass sie für Freunde in Not hilfreich ist!

Verwendete Bibliothek: golang.org/x/crypto/ssh (die Wand hat einen Proxy https://goproxy.cn)

1. Senden Sie den Befehl zum Ausführen von session.Run()

package main

import (
    "bytes"
    "fmt"
    "golang.org/x/crypto/ssh"
    "log")

func main() {
    // 建立SSH客户端连接
    client, err := ssh.Dial("tcp", "127.0.0.1:2222", &ssh.ClientConfig{
        User:            "root",
        Auth:            []ssh.AuthMethod{ssh.Password("123456")},
        HostKeyCallback: ssh.InsecureIgnoreHostKey(),
    })
    if err != nil {
        log.Fatalf("SSH dial error: %s", err.Error())
    }

    // 建立新会话
    session, err := client.NewSession()
    if err != nil {
        log.Fatalf("new session error: %s", err.Error())
    }

    defer session.Close()


    var b bytes.Buffer
    session.Stdout = &b
    if err := session.Run("ls"); err != nil {
        panic("Failed to run: " + err.Error())
    }
    fmt.Println(b.String())
}

2 um die Sitzung auszuführen .Output()

session.run(command) führt den Befehl direkt auf dem Host aus und kümmert sich nicht um das Ausführungsergebnis. session.Output gibt den Stdout zurück, nachdem der Befehl ausgeführt wurde Ich muss es überprüfen. Funktion zum Umschreiben des Client-Quellcodes

Verwenden Sie die GO-Sprache, um sich flexibel per Batch-SSH beim Server anzumelden und Vorgänge auszuführen: https://www.cnblogs.com/findumars/p/5930584.html

A sehr gutes Web-SSH-Projekt auf Github: https://github.com/libragen/felix

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Golang-SSH-Verbindungsservers (Simulation eines interaktiven Terminals). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen