Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menyambung ke Pelayan Menggunakan SSH dan Kunci PEM dalam Go?

Bagaimana untuk Menyambung ke Pelayan Menggunakan SSH dan Kunci PEM dalam Go?

Linda Hamilton
Linda Hamiltonasal
2024-11-04 07:36:30745semak imbas

How to Connect to a Server Using SSH and a PEM Key in Go?

Sambung ke Pelayan menggunakan SSH dan PEM / Kunci dengan Go

Menyambung ke pelayan jauh dengan selamat menggunakan SSH ialah tugas biasa dalam pentadbiran sistem dan automasi. Apabila berurusan dengan pelayan Linux, pengesahan kunci SSH sering diutamakan daripada pengesahan kata laluan untuk keselamatannya yang lebih tinggi. Artikel ini menunjukkan cara untuk mewujudkan sambungan SSH ke pelayan jauh menggunakan kunci PEM (Privacy Enhanced Mail) dalam Go.

Pakej ssh dalam Go menyediakan sokongan untuk sambungan SSH. Untuk menyambung menggunakan kunci PEM, kita perlu menghuraikan kunci itu terlebih dahulu ke dalam objek ssh.Signer. Kita boleh menggunakan fungsi ssh.ParsePrivateKey untuk tujuan ini. Sebaik sahaja kita mempunyai ssh.Signer, kita boleh mencipta objek ssh.AuthMethod menggunakan ssh.PublicKeys. ssh.AuthMethod ini akan digunakan untuk mengesahkan dengan pelayan.

Dengan ssh.AuthMethod sedia, kami kini boleh mengkonfigurasi objek ssh.ClientConfig. Kami menentukan nama pengguna, kaedah pengesahan dan parameter lain yang diperlukan dalam konfigurasi ini. Setelah konfigurasi disediakan, kami menggunakan fungsi ssh.Dial untuk mewujudkan sambungan. Kemudian kita boleh membuat sesi baharu menggunakan ssh.NewSession dan melaksanakan arahan pada pelayan jauh.

Berikut ialah coretan kod contoh yang menggariskan langkah-langkah:

<code class="go">import (
    "io"
    "log"
    "net"
    "os"

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

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

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

    auths := []ssh.AuthMethod{ssh.PublicKeys(signer)}
    cfg := &ssh.ClientConfig{
        User: "my_user",
        Auth: auths,
    }

    conn, err := ssh.Dial("tcp", "remote_host:22", cfg)
    if err != nil {
        log.Fatal(err)
    }
    defer conn.Close()

    session, err := conn.NewSession()
    if err != nil {
        log.Fatal(err)
    }
    defer session.Close()

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

    if _, err := io.ReadAll(stdout); err != nil {
        log.Fatal(err)
    }
}</code>

Dengan mengikuti langkah ini dan menggunakan coretan kod yang disediakan, anda boleh mewujudkan sambungan SSH selamat ke pelayan jauh menggunakan kunci PEM dalam program Go anda.

Atas ialah kandungan terperinci Bagaimana untuk Menyambung ke Pelayan Menggunakan SSH dan Kunci PEM dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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