Golang で秘密キーを使用して SSH を使用してリモート サーバーに接続する方法

DDD
リリース: 2024-11-05 13:36:02
オリジナル
270 人が閲覧しました

How to Connect to a Remote Server Using SSH with a Private Key in Golang?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!