Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk SSH menjadi Contoh Peribadi melalui Hos Bastion dalam Go menggunakan x/crypto/ssh?

Bagaimana untuk SSH menjadi Contoh Peribadi melalui Hos Bastion dalam Go menggunakan x/crypto/ssh?

Patricia Arquette
Patricia Arquetteasal
2024-12-06 16:42:22301semak imbas

How to SSH into a Private Instance via a Bastion Host in Go using x/crypto/ssh?

Mewujudkan Sambungan SSH ke Instance Peribadi melalui Nod Bastion dalam Go Menggunakan x/crypto/ssh

Dalam senario ini, anda bertujuan untuk menyambung kepada contoh peribadi (dirujuk sebagai "contoh perkhidmatan") daripada komputer riba tempatan anda melalui nod benteng yang digunakan dalam AWS VPC mengandungi subnet awam dan peribadi. Anda berhasrat untuk melaksanakan perintah pada contoh perkhidmatan dan memindahkan fail daripada komputer riba tempatan anda.

Untuk mencapai ini menggunakan perpustakaan "x/crypto/ssh" Go:

  1. Mewujudkan Sambungan ke Hos Bastion:

    • Buat ssh.Pelanggan yang mewakili sambungan kepada hos benteng.
  2. Tetapkan Sambungan ke Instance Perkhidmatan daripada Bastion:

    • Gunakan kaedah Dail klien benteng untuk mewujudkan jaring maya.Conn antara anda dan perkhidmatan contoh.
  3. Buat Pelanggan SSH Baharu untuk Contoh Perkhidmatan:

    • Tukar net.Conn kepada ssh.Conn menggunakan ssh.NewClientConn.
    • Buat ssh.Client (pelanggan) baharu untuk komunikasi dengan contoh perkhidmatan.
  4. Laksanakan Perintah dan Pemindahan Fail:

    • Gunakan sClient untuk melaksanakan arahan pada contoh perkhidmatan.
    • Laksanakan mekanisme pemindahan fail (cth., SFTP) kepada muat naik fail daripada komputer riba tempatan anda ke contoh perkhidmatan.

Di bawah ialah coretan kod yang menunjukkan langkah-langkah ini:

// connect to the bastion host
bClient, err := ssh.Dial("tcp", bastionAddr, config)
if err != nil {
    log.Fatal(err)
}

// Dial a connection to the service host, from the bastion
conn, err := bClient.Dial("tcp", serviceAddr)
if err != nil {
    log.Fatal(err)
}

ncc, chans, reqs, err := ssh.NewClientConn(conn, serviceAddr, config)
if err != nil {
    log.Fatal(err)
}

sClient := ssh.NewClient(ncc, chans, reqs)

Dengan sClient, anda boleh melaksanakan arahan dan pindahkan fail ke dan dari contoh perkhidmatan.

Atas ialah kandungan terperinci Bagaimana untuk SSH menjadi Contoh Peribadi melalui Hos Bastion dalam Go menggunakan x/crypto/ssh?. 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