SOCKS dialerrak garraioa ematen du; SSH paketeak haren gainean egiten du SSH esku-ukitzea. Geroago ssh.Dial deitzeak konexio bereizi bat sortuko luke, garraio hori erabili beharrean.

x/net/proxy eta x/crypto/ssh erabiltzen dituen aplikazio bateko funtzio laguntzaile batek konfiguratutako SSH bezeroa itzul dezake:

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
}

Hemen pakete-izenak golang.org/x/net/proxy eta golang.org/x/crypto/ssh dira. proxyAddr-ek SOCKS entzulea adierazten du; sshAddr-ek azken zerbitzaria host:port gisa adierazten du.

Eman config-en aplikazioaren ohiko SSH erabiltzailea, autentifikazio metodoak eta HostKeyCallback. knownhosts paketeak callback hori known_hosts fitxategi fidagarri batetik eraiki dezake. Pasatu helmugako ostalari-izena NewClientConn-i, ostalari-gakoaren parekatzeak xede den SSH identitatea erabil dezan.

nil argumentuak ez du SOCKS kredentzialik hautatzen. Baimendutako SSH helmuga publikoetarako, SOCKS5 proxy zerrendako konturik gabeko sarrera batek proxyAddr eman dezake, benetako SSH ostalaria eta portua onartzen baditu. Behar denean, pasatu proxy.Auth proxy kontuarekin; SSH autentifikazioa config-en geratzen da.

NewClient-ek NewClientConn-ek itzultzen dituen kanal eta eskaera fluxu sarrerak hartzen ditu eta bezeroaren mekanismo hori kudeatzen du. Itxi itzulitako SSH bezeroa haren lana amaitzean. Produkzioko konexio-kudeaketak markatze mugatua eta esku-ukitze politika ere behar ditu; funtzio laguntzaile honek garraioaren entregatzea baino ez du erakusten.

Erlazionatutako artikuluak