Kipiga simu cha SOCKS hutoa usafirishaji; kifurushi cha SSH hufanya mshikamano wa SSH juu yake. Kuita ssh.Dial baadaye kungeunda muunganisho tofauti badala ya kutumia usafirishaji huo.

Kitendakazi kisaidizi katika programu inayotumia x/net/proxy na x/crypto/ssh tayari kinaweza kurudisha mteja wa SSH aliyesanidiwa:

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
}

Majina ya vifurushi hapa ni golang.org/x/net/proxy na golang.org/x/crypto/ssh. proxyAddr hubainisha msikilizaji wa SOCKS; sshAddr hubainisha seva ya mwisho kama host:port.

Toa katika config mtumiaji wa kawaida wa SSH wa programu, mbinu za uthibitishaji na HostKeyCallback. Kifurushi cha knownhosts kinaweza kuunda callback hiyo kutoka faili ya known_hosts inayoaminika. Pitisha jina la mwenyeji wa lengo kwa NewClientConn ili ulinganishaji wa ufunguo wa mwenyeji utumie utambulisho wa SSH uliokusudiwa.

Hoja ya nil haichagui vitambulisho vya SOCKS. Kwa malengo ya umma ya SSH yanayoruhusiwa, ingizo lisilo na akaunti kutoka orodha ya proksi za SOCKS5 linaweza kutoa proxyAddr ikiwa linaruhusu mwenyeji na bandari halisi za SSH. Inapohitajika, pitisha proxy.Auth iliyo na akaunti ya proksi; uthibitishaji wa SSH unabaki katika config.

NewClient hupokea mitiririko ya njia na maombi yanayoingia inayorudishwa na NewClientConn na kushughulikia utaratibu huo wa mteja. Funga mteja wa SSH uliorudishwa kazi yake inapokamilika. Ushughulikiaji wa miunganisho katika uzalishaji pia unahitaji upigaji simu wenye kikomo na sera ya mshikamano; kitendakazi hiki kisaidizi kinaonyesha tu ukabidhi wa usafirishaji.

Makala zinazohusiana