Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menyambung ke Pelayan Jauh Menggunakan SSH dengan Kunci Peribadi di Golang?

Bagaimana untuk Menyambung ke Pelayan Jauh Menggunakan SSH dengan Kunci Peribadi di Golang?

DDD
Lepaskan: 2024-11-05 13:36:02
asal
378 orang telah melayarinya

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

Sambung ke Pelayan Jauh Menggunakan SSH dengan Kunci Peribadi di Golang

Menggunakan pakej SSH dalam Go membolehkan sambungan mudah ke pelayan jauh melalui protokol SSH. Walau bagaimanapun, mewujudkan sambungan dengan kunci peribadi memerlukan pemahaman yang lebih mendalam tentang fungsi pakej.

Pakej SSH menyediakan sokongan untuk pelbagai kaedah pengesahan, termasuk pengesahan kata laluan. Fungsi Dail, seperti yang dinyatakan dalam dokumentasi pakej, membolehkan pengguna menentukan kaedah pengesahan yang akan digunakan dalam mewujudkan sambungan. Untuk memanfaatkan kunci peribadi untuk pengesahan, kami perlu menggunakan kaedah tambahan yang disediakan oleh pakej.

Fungsi PublicKeys memainkan peranan penting dalam senario ini. Ia membantu dalam menukar koleksi penandatangan SSH kepada mekanisme pengesahan. Penandatangan ini boleh diperoleh menggunakan pelbagai kaedah, termasuk menghuraikannya daripada perwakilan bait PEM. Keupayaan untuk menggunakan kunci persendirian RSA, DSA atau ECDSA secara langsung juga disokong melalui penggunaan fungsi NewSignerFromKey.

Mari kita pertimbangkan contoh yang menunjukkan pelaksanaan praktikal konsep ini. Contoh ini menggabungkan sokongan untuk pengesahan berasaskan ejen, yang biasanya mengikuti penggunaan pengesahan kunci persendirian.

<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>
Salin selepas log masuk

Dengan sampel kod yang dipertingkat ini, anda boleh menyambung ke pelayan dari jauh menggunakan kunci persendirian melalui SSH pakej dalam Go. Ciri tambahan seperti pengesahan berasaskan ejen juga telah digabungkan untuk demonstrasi keseluruhan proses yang lebih menyeluruh.

Atas ialah kandungan terperinci Bagaimana untuk Menyambung ke Pelayan Jauh Menggunakan SSH dengan Kunci Peribadi di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan