概要
このガイドでは、Go CLI でコマンドを実行するために必要な手順を説明します。 Go CLI を使用するリモート マシン。 SSH 経由での接続、キーを使用した認証、シングルホップ接続の処理方法を学び、要塞マシンとターゲット マシンの両方でコマンドを実行できるようにします。
リモート実行に SSH を使用する
最初のステップでは、「golang.org/x/crypto/ssh」パッケージを利用して SSH 接続を確立します。このパッケージは、安全なリモート コマンド実行に必要な機能を提供します。
使用例
どのように動作するかを示すために、単一のコマンドを実行する、remoteRun という関数を作成してみましょう。リモートマシンを呼び出して、出力:
func remoteRun(user, addr, privateKey, cmd string) (string, error) { key, err := ssh.ParsePrivateKey([]byte(privateKey)) if err != nil { return "", err } config := &ssh.ClientConfig{ User: user, HostKeyCallback: ssh.InsecureIgnoreHostKey(), Auth: []ssh.AuthMethod{ ssh.PublicKeys(key), }, } client, err := ssh.Dial("tcp", net.JoinHostPort(addr, "22"), config) if err != nil { return "", err } session, err := client.NewSession() if err != nil { return "", err } defer session.Close() var b bytes.Buffer session.Stdout = &b err = session.Run(cmd) return b.String(), err }
使用法
remoteRun 関数を使用するには、次のパラメータを渡すことができます:
シングルホップ接続
要塞マシン経由でターゲット マシンに接続する必要がある場合は、remoteRun 関数を使用できます。ネストされたファッション:
bastionOutput, err := remoteRun("user", "bastion-addr", "key", "ssh user@target-addr -p 22") if err != nil { // Handle error } targetOutput, err := remoteRun("user", "target-addr", "key", "command-on-target") if err != nil { // Handle error }
この例では、bastionOutput 変数には、ターゲット マシンに接続する SSH コマンドからの出力が含まれています。そこから、targetOutput 変数には、ターゲット マシンで実行されたコマンドの出力が含まれます。
以上がGo CLI を使用してリモート マシンでコマンドを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。