ホームページ  >  記事  >  バックエンド開発  >  Go の ssh パッケージを使用してキーによる SSH 接続を確立するにはどうすればよいですか?

Go の ssh パッケージを使用してキーによる SSH 接続を確立するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-02 12:47:30866ブラウズ

How to Establish SSH Connections with Keys Using Go's ssh Package?

Go の ssh パッケージを使用してキーによる SSH 接続を確立する

キーを使用して SSH 経由でリモート サーバーに接続することは、システム管理において不可欠なタスクですそしてDevOps。 Go プログラミング言語は、SSH 接続を処理するための ssh パッケージを提供します。ただし、ドキュメントを参照するのは難しい場合があります。

次のような疑問が生じます: Go ssh パッケージのキー ファイルまたは秘密キーを使用して SSH サーバーに接続できますか?

ドキュメントには、現在「パスワード」認証方法のみがサポートされていると記載されています。キー ファイルまたは秘密キーを使用して接続を確立することは完全に可能であるため、心配する必要はありません。

この機能のロックを解除する鍵は、キー ファイルを ssh.Signer に変換し、それを ssh 内に埋め込むことにあります。 .AuthMethod.PublicKeys。このプロセスを詳しく説明するサンプル コード スニペットを次に示します。

<code class="go">import (
    "crypto/ecdsa"
    "crypto/x509"
    "encoding/pem"
    "fmt"
    "io/ioutil"
    "log"
    "net"

    "golang.org/x/crypto/ssh"
    "golang.org/x/crypto/ssh/agent"
)

func main() {
    pemBytes, err := ioutil.ReadFile("my_key.pem")
    if err != nil {
        log.Fatal(err)
    }

    block, _ := pem.Decode(pemBytes)
    privKey, err := x509.ParseECPrivateKey(block.Bytes)
    if err != nil {
        log.Fatal(err)
    }

    signer, err := ssh.NewSignerFromKey(privKey)
    if err != nil {
        log.Fatal(err)
    }

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

    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)
    }

    stdout, err := session.Output("whoami")
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(string(stdout))
}</code>

この拡張されたコードは、キー ファイルと秘密キーの両方を処理し、より包括的なソリューションを提供します。この例では、ecdsa キーが使用されていますが、この概念はあらゆる種類の秘密キーに当てはまります。

結論:

Go ssh パッケージを使用すると、SSH 接続を確立できます。キーを使用して。当然のことながら、ドキュメントは複雑に見えるかもしれません。 ssh.PublicKeys を利用し、ssh.Signer を使用してキーを適切な形式に変換することで、シームレスに接続し、重要なシステム タスクを実行できるようになります。

以上がGo の ssh パッケージを使用してキーによる SSH 接続を確立するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。