首頁 >後端開發 >Golang >如何使用 Go 中的金鑰 SSH 到 Linux 伺服器?

如何使用 Go 中的金鑰 SSH 到 Linux 伺服器?

Susan Sarandon
Susan Sarandon原創
2024-11-03 14:04:031007瀏覽

How to SSH into Linux Servers Using Keys in Go?

使用 Go 中的金鑰 SSH 到 Linux 伺服器

使用 SSH 和 Golang 中的金鑰連接到伺服器可以透過 ssh 套件來實現。操作方法如下:

Dial 功能需要一個 ssh.AuthMethod 實例,可以使用 ssh.PublicKeys 從 SSH 金鑰建立該實例。若要從 PEM 位元組取得簽署者,請使用 ssh.ParsePrivateKey。

要使用私鑰的 Signers 字段,可以使用 ssh.PublicKeys(signers...) 作為身份驗證方法。

範例程式碼:

<code class="go">import (
    "log"
    "net"
    "os"

    "github.com/gliderlabs/ssh"
)

func main() {
    sock, err := net.Dial("unix", os.Getenv("SSH_AUTH_SOCK"))
    if err != nil {
        log.Fatal(err)
    }

    agent := agent.NewClient(sock)

    signers, err := agent.Signers()
    if err != nil {
        log.Fatal(err)
    }

    auths := []ssh.AuthMethod{ssh.PublicKeys(signers...)}

    cfg := &ssh.ClientConfig{
        User: "username",
        Auth: auths,
    }
    cfg.SetDefaults()

    client, err := ssh.Dial("tcp", "aws-hostname:22", cfg)
    if err != nil {
        log.Fatal(err)
    }

    session, err := client.NewSession()
    if err != nil {
        log.Fatal(err)
    }

    log.Println("we have a session!")
}</code>

此程式碼模仿 ssh -i x.pem user@host 指令,使用提供的金鑰與指定伺服器建立 SSH 工作階段。現在您可以透過會話變數在伺服器內執行命令。

以上是如何使用 Go 中的金鑰 SSH 到 Linux 伺服器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn