Soláthraíonn an dialer SOCKS an t-iompar; déanann an pacáiste SSH an croitheadh láimhe SSH air. Chruthódh glao ar ssh.Dial ina dhiaidh sin nasc ar leithligh in ionad an t-iompar sin a úsáid.

Is féidir le feidhm chúnta in aip a úsáideann x/net/proxy agus x/crypto/ssh cheana an cliant SSH cumraithe a thabhairt ar ais:

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
}

Is iad ainmneacha na bpacáistí anseo golang.org/x/net/proxy agus golang.org/x/crypto/ssh. Sainaithníonn proxyAddr an éisteoir SOCKS; sainaithníonn sshAddr an freastalaí deiridh mar host:port.

Cuir gnáth-úsáideoir SSH na haipe, na modhanna fíordheimhniúcháin agus HostKeyCallback ar fáil i config. Is féidir leis an bpacáiste knownhosts an callback sin a thógáil ó chomhad known_hosts iontaofa. Cuir óstainm an sprioc isteach i NewClientConn ionas go n-úsáidfidh meaitseáil eochair an óstaigh an fhéiniúlacht SSH atá beartaithe.

Ní roghnaíonn an argóint nil aon dintiúir SOCKS. I gcás spriocanna SSH poiblí ceadaithe, is féidir le hiontráil gan chuntas ó liosta seachfhreastalaí SOCKS5 proxyAddr a sholáthar má cheadaíonn sé óstach agus port SSH iarbhír. Nuair is gá, cuir proxy.Auth ina bhfuil cuntas an tseachfhreastalaí; fanann fíordheimhniú SSH i config.

Glacann NewClient leis na sruthanna isteach cainéil agus iarratais a thugann NewClientConn ar ais agus láimhseálann sé an mheaisíneacht chliaint sin. Dún an cliant SSH a thugtar ar ais nuair a chríochnaíonn a chuid oibre. Teastaíonn polasaí diailithe teoranta agus croitheadh láimhe ó láimhseáil nasc i dtáirgeadh freisin; ní dhéanann an fheidhm chúnta seo ach aistriú an iompair a léiriú.

Ailt ghaolmhara