I-dialer ye-SOCKS ihlinzeka ngokuthutha; iphakethe le-SSH lenza ukuxhawulana kwe-SSH phezu kwayo. Ukushaya i-ssh.Dial ngemva kwalokho kuzodala uxhumano oluhlukile esikhundleni sokusebenzisa lokho kuthutha.

Umsebenzi wosizo kuhlelo lokusebenza oselusebenzisa i-x/net/proxy ne-x/crypto/ssh ungabuyisela i-SSH client elungiselelwe:

func dialSSHViaSOCKS(proxyAddr, sshAddr string,
    config *ssh.ClientConfig) (*ssh.Client, error) {
    dialer, err := proxy.SOCKS5("tcp", proxyAddr, nil, proxy.Direct)
    if err != nil {
        return nil, err
    }

    conn, err := dialer.Dial("tcp", sshAddr)
    if err != nil {
        return nil, err
    }

    transport, channels, requests, err :=
        ssh.NewClientConn(conn, sshAddr, config)
    if err != nil {
        conn.Close()
        return nil, err
    }

    return ssh.NewClient(transport, channels, requests), nil
}

Amagama amaphakethe lapha yi-golang.org/x/net/proxy ne-golang.org/x/crypto/ssh. I-proxyAddr ikhomba isilaleli se-SOCKS; i-sshAddr ikhomba iseva yokugcina njenge-host:port.

Nikeza ku-config umsebenzisi we-SSH ojwayelekile wohlelo, izindlela zokuqinisekisa kanye ne-HostKeyCallback. Iphakethe le-knownhosts lingakha leyo callback kusukela kufayela le-known_hosts elithenjiweyo. Dlulisa igama lomsingathi wendawo ku-NewClientConn ukuze ukuqhathanisa ukhiye womsingathi kusebenzise ubunikazi be-SSH obuhlosiwe.

I-agumenti ye-nil ayikhethi zicwangciso ze-SOCKS. Ezingxenyeni zomphakathi ze-SSH ezivunyelwe, umbhalo ongena-akhawunti ovela kuhlu lwe-proxy ye-SOCKS5 ungahlinzeka nge-proxyAddr uma uvumela umsingathi kanye nechweba le-SSH langempela. Uma kudingeka, dlulisa i-proxy.Auth equkethe i-akhawunti ye-proxy; ukuqinisekisa kwe-SSH kuhlala ku-config.

I-NewClient yamukela imifudlana yejelo neyezicelo engenayo ebuyiswa yi-NewClientConn futhi iphatha lowo mshini weklayenti. Vala i-SSH client ebuyisiwe uma umsebenzi wayo uphela. Ukuphatha ukuxhumana ekukhiqizeni nakho kudinga ukushaya okulinganiselwe kanye nenqubomgomo yokuxhawulana; lo msebenzi wosizo ukhombisa kuphela ukudluliswa kokuthutha.

Izihloko ezihlobene