Golang で秘密キーを使用した SSH を使用してリモート サーバーに接続する
Go で SSH パッケージを利用すると、 SSH プロトコル。ただし、秘密キーを使用した接続を確立するには、パッケージの機能をより深く理解する必要があります。
SSH パッケージは、パスワード認証を含むさまざまな認証方法をサポートします。パッケージのドキュメントで説明されているように、ダイヤル機能を使用すると、ユーザーは接続の確立に使用する認証方法を指定できます。認証に秘密キーを利用するには、パッケージによって提供される追加のメソッドを使用する必要があります。
このシナリオでは、PublicKeys 関数が重要な役割を果たします。これは、SSH 署名者のコレクションを認証メカニズムに変換するのに役立ちます。これらの署名者は、PEM バイト表現からの解析など、さまざまな方法を使用して取得できます。 RSA、DSA、または ECDSA 秘密キーを直接利用する機能は、NewSignerFromKey 関数の使用によってもサポートされています。
これらの概念の実際的な実装を示す例を考えてみましょう。この例には、エージェント ベースの認証のサポートが組み込まれており、通常は秘密キー認証の使用に続きます。
<code class="go">import ( "log" "net" "os" "golang.org/x/crypto/ssh" "golang.org/x/crypto/ssh/agent" ) func main() { // Establishes a connection to the SSH Agent sock, err := net.Dial("unix", os.Getenv("SSH_AUTH_SOCK")) if err != nil { log.Fatal(err) } agent := agent.NewClient(sock) // Acquires signers from the SSH Agent signers, err := agent.Signers() if err != nil { log.Fatal(err) } // Creates a list of authentication methods using the signers obtained auths := []ssh.AuthMethod{ssh.PublicKeys(signers...)} // Configures the client using the username and authentication details cfg := &ssh.ClientConfig{ User: "username", Auth: auths, } cfg.SetDefaults() // Establishes a connection to the remote server client, err := ssh.Dial("tcp", "aws-hostname:22", cfg) if err != nil { log.Fatal(err) } // Creates a new session in the established connection session, err = client.NewSession() if err != nil { log.Fatal(err) } log.Println("Successfully established a session!") }</code>
この強化されたコード サンプルを使用すると、SSH 経由で秘密キーを使用してリモートでサーバーに接続できます。 Go のパッケージ。プロセス全体のより包括的なデモのために、エージェントベースの認証などの追加機能も組み込まれています。
以上がGolang で秘密キーを使用して SSH を使用してリモート サーバーに接続する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。