Mae'r dialer SOCKS yn darparu'r trafnidiaeth; mae'r pecyn SSH yn gwneud yr ysgwyd llaw SSH drosti. Byddai galw ssh.Dial wedyn yn creu cysylltiad ar wahân yn lle defnyddio'r drafnidiaeth honno.

Gall ffwythiant cynorthwyol mewn rhaglen sy'n defnyddio x/net/proxy ac x/crypto/ssh yn barod ddychwelyd y cleient SSH wedi'i ffurfweddu:

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
}

Yr enwau pecyn yma yw golang.org/x/net/proxy a golang.org/x/crypto/ssh. Mae proxyAddr yn nodi'r gwrandäwr SOCKS; mae sshAddr yn nodi'r gweinydd terfynol fel host:port.

Darparwch yn config arferol defnyddiwr SSH y rhaglen, y dulliau dilysu a HostKeyCallback. Gall y pecyn knownhosts adeiladu'r callback hwnnw o ffeil known_hosts ddibynadwy. Trosglwyddwch enw gwesteiwr y gyrchfan i NewClientConn fel bod paru allwedd y gwesteiwr yn defnyddio'r hunaniaeth SSH a fwriadwyd.

Nid yw'r ddadl nil yn dewis unrhyw gredydau SOCKS. Ar gyfer cyrchfannau SSH cyhoeddus a ganiateir, gall cofnod heb gyfrif o'r rhestr dirprwyon SOCKS5 ddarparu proxyAddr os yw'n caniatáu gwesteiwr a phorth SSH gwirioneddol. Pan fo angen, trosglwyddwch proxy.Auth sy'n cynnwys cyfrif y dirprwy; mae dilysu SSH yn aros yn config.

Mae NewClient yn derbyn y ffrydiau sianel a chais sy'n dod i mewn a ddychwelwyd gan NewClientConn ac yn trin y peirianwaith cleient hwnnw. Caewch y cleient SSH a ddychwelwyd pan ddaw ei waith i ben. Mae trin cysylltiadau mewn cynhyrchiad hefyd angen deialu cyfyngedig a pholisi ysgwyd llaw; dim ond trosglwyddo'r drafnidiaeth y mae'r ffwythiant cynorthwyol hwn yn ei ddangos.

Erthyglau cysylltiedig