Go の pem/キーを使用した SSH への認証
秘密キーを使用してリモート SSH サーバーに接続するのは便利な方法です。タスクを自動化し、リソースを管理します。 Go プログラミング言語は、SSH 接続の確立をサポートする ssh パッケージを提供します。ただし、秘密キーを使用して認証する方法については、ドキュメントがやや不明確な場合があります。
pem キーを使用して SSH を使用してサーバーに接続するには、次の手順に従います。
例:
<code class="go">package main import ( "crypto/x509" "fmt" "io/ioutil" "log" "net" "os" "golang.org/x/crypto/ssh" ) func main() { // Parse the private key key, err := ioutil.ReadFile("mykey.pem") if err != nil { log.Fatal(err) } // Get the signer signer, err := ssh.ParsePrivateKey(key) if err != nil { log.Fatal(err) } // Switch to using an agent if SSH_AUTH_SOCK is set if authSock := os.Getenv("SSH_AUTH_SOCK"); authSock != "" { sock, err := net.Dial("unix", authSock) if err != nil { log.Fatalf("Failed to connect to agent: %v", err) } _ = sock // TODO(harsh) // Implement working with agent. } // Create the AuthMethod authMethods := []ssh.AuthMethod{ssh.PublicKeys(signer)} // Set up the ClientConfig clientConfig := &ssh.ClientConfig{ User: "username", Auth: authMethods, HostKeyCallback: ssh.InsecureIgnoreHostKey(), } // Dial the connection client, err := ssh.Dial("tcp", "aws-hostname:22", clientConfig) if err != nil { log.Fatal(err) } // Create a session session, err := client.NewSession() if err != nil { log.Fatal(err) } // Execute a command output, err := session.Output("whoami") if err != nil { log.Fatal(err) } fmt.Println("Output:", string(output)) // Close the session and client _ = session.Close() _ = client.Close() }</code>
これらの手順に従うと、秘密キーを使用して安全な SSH 接続を確立し、Go 標準ライブラリの ssh パッケージを使用してリモート サーバー上でコマンドを実行できます。
以上がGo で PEM/キーを使用して SSH を認証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。