使用 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中文網其他相關文章!