Id-dialer SOCKS jipprovdi t-trasport; il-pakkett SSH iwettaq il-handshake SSH fuqu. Sejħa lil ssh.Dial wara toħloq konnessjoni separata minflok tuża dak it-trasport.

Funzjoni awżiljarja f'applikazzjoni li diġà tuża x/net/proxy u x/crypto/ssh tista' tirritorna l-klijent SSH konfigurat:

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
}

L-ismijiet tal-pakketti hawn huma golang.org/x/net/proxy u golang.org/x/crypto/ssh. proxyAddr jidentifika s-semmiegħ SOCKS; sshAddr jidentifika s-server finali bħala host:port.

Ipprovdi fil-config l-utent SSH tas-soltu tal-applikazzjoni, il-metodi ta' awtentikazzjoni u HostKeyCallback. Il-pakkett knownhosts jista' jibni dak il-callback minn fajl known_hosts afdat. Għaddi l-isem tal-host tad-destinazzjoni lil NewClientConn biex it-tqabbil taċ-ċavetta tal-host juża l-identità SSH mahsuba.

L-argument nil ma jagħżel l-ebda kredenzjali SOCKS. Għal destinazzjonijiet SSH pubbliċi permessi, entrata mingħajr kont mil-lista tal-proxies SOCKS5 tista' tipprovdi proxyAddr jekk tippermetti l-host u l-port SSH reali. Meta jkun meħtieġ, għaddi proxy.Auth li jkun fih il-kont tal-proxy; l-awtentikazzjoni SSH tibqa' fil-config.

NewClient jirċievi l-flussi tal-kanali u tat-talbiet li jidħlu li jirritorna NewClientConn u jamministra dik il-mekkanika tal-klijent. Agħlaq il-klijent SSH li jirritorna meta x-xogħol tiegħu jispiċċa. L-immaniġġjar tal-konnessjonijiet fil-produzzjoni jeħtieġ ukoll dialing limitat u politika tal-handshake; din il-funzjoni awżiljarja turi biss il-kunsinna tat-trasport.

Artikli relatati