Dialer-ka SOCKS ayaa bixiya gaadiidka; xirmada SSH ayaa ku sameeya isku-xidhka gacanta SSH dusheeda. Wicitaanka ssh.Dial ka dib wuxuu abuuri lahaa xiriir gooni ah halkii uu isticmaali lahaa gaadiidkaas.

Shaqo-gelin caawiya oo ku jirta barnaamij horey u isticmaalaya x/net/proxy iyo x/crypto/ssh ayaa soo celin kara macmiilka SSH ee la habeeyay:

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
}

Magacyada xirmooyinka halkan waa golang.org/x/net/proxy iyo golang.org/x/crypto/ssh. proxyAddr wuxuu tilmaamaa dhagaystaha SOCKS; sshAddr wuxuu tilmaamaa serverka ugu dambeeya sida host:port.

Ku bixi config isticmaalaha SSH caadiga ah ee barnaamijka, hababka xaqiijinta iyo HostKeyCallback. Xirmada knownhosts waxay ka dhisi kartaa callback-kaas fayl known_hosts la aamini karo. U gudbi magaca host-ka bartilmaameedka NewClientConn si isbarbardhigga furaha host-ku u isticmaalo aqoonsiga SSH ee loogu talagalay.

Doodda nil ma doorato wax aqoonsi SOCKS ah. Bartilmaameedyada SSH ee dadweynaha ee la ogol yahay, gelitaan aan akoon lahayn oo ka timid liiska proxy SOCKS5 ayaa bixin kara proxyAddr haddii uu ogolaado host-ka iyo dekedda SSH dhabta ah. Marka loo baahdo, gudbi proxy.Auth oo ay ku jirto akoonka proxy; xaqiijinta SSH waxay ku sii jirtaa config.

NewClient wuxuu qaataa qulqulka kanaalka iyo codsiga soo galaya ee NewClientConn soo celiyo wuxuuna maareeyaa mishiinkaas macmiilka. Xir macmiilka SSH ee soo noqday marka shaqadiisu dhammaato. Maaraynta xiriirka ee wax-soo-saarka waxay sidoo kale u baahan tahay dial xaddidan iyo siyaasad isku-xidhka gacanta; shaqo-gelintan caawiya waxay kaliya muujinaysaa gudbinta gaadiidka.

Maqaallo la xiriira